PDA

View Full Version : بدست آوردن آخرین رکورد خرید مشتریان



Naghibi
یک شنبه 03 آذر 1392, 08:29 صبح
با سلام خدمت همه برنامه نویسان گرامی

من یه جدول دارم که شامل فیلدهای CustomerID و BuyDate و Cost است. توی این جدول اطلاعات خرید مشتریان ذخیره میشود. میخوام یک select بنویسم که آخرین رکورد خرید هر مشتری رو نشون بده و اگر میشه sum این رکوردها رو هم محاسبه کنه. اما نمیدونم چه جوری میشه یه همچین دستوری نوشت؟ لطفا منو راهنمایی کنین

golnaz_a
یک شنبه 03 آذر 1392, 09:51 صبح
توی جدولتون فقط همین سه فیلد را دارید؟

tooraj_azizi_1035
چهارشنبه 06 آذر 1392, 09:53 صبح
سلام
آخرین رکورد خرید اگه تاریخ هاتون شمسی ذخیره شده با Max(BuyDate) قابل دستیابی هست.

select customerid, sum(cost), (select max(buydate) from buy where customerid=b.customerid) from buy b
group by customerid

محمد سلیم آبادی
پنج شنبه 07 آذر 1392, 09:03 صبح
--SQL Server Any Version
SELECT T.*,
D.sm as total
FROM
(
SELECT CustomerID,
MAX(BuyDate) as mx,
SUM(Cost) as sm
FROM table_name
GROUP BY CustomerID
)D
INNER JOIN table_name T
ON D.mx = T.BuyDate
AND D.customerID = T.customerID;

--SQL Server >= 2005
SELECT CustomerID و BuyDate و Cost, total
FROM
(
SELECT *,
SUM(Cost) OVER(PARTITION BY CustomerID) as total
ROW_NUMBER() OVER(PARTITION BY CustomerID ORDER BY BuyDate DESC) as rnk
FROM table_name
)D
WHERE rnk = 1;

argess
سه شنبه 19 آذر 1392, 11:16 صبح
سلام
یک نگاهی به این پست بینداز. احتمالا خیلی راحت مشکلت حل میشه.
دستوری در Sql2005 و Sql2008 اضافه شده است با نام Outer Apply و Cross Apply
http://argess.ir/Persian/QuestionView.aspx?QuestionId=1006

farnaz.dabaghian
دوشنبه 23 فروردین 1395, 05:06 صبح
با سلام به همگی
من در این مورد یه سوالی داشتم
دستوراتی که در بالا گفتین مال زمانی است که آخرین سفارش مشتریان فقط شامل یک رکورد باشد، حالا اگه تعداد رکوردها بیشتر باشد به چه صورتی باید عمل بشه، تعداد رکوردهایی که برای یک روز خاص دارم بیشتر از یک رکورد است ولی تعداد آنها نیز مشخص نیست، ممکن است برای یک مشتری 5 رکورد باشد ، ممکن است 10 رکورد باشد، میخوام کل اطلاعات یک مشتری برای آخرین تاریخ نمایش داده شد.
ممنون میشم اگه راهنمایی بفرمایید

parsdarab
چهارشنبه 25 فروردین 1395, 09:17 صبح
سلام

create table Customer
(
Id int primary key,
Fname nvarchar(20),
)


create table [Order]
(
Id int,
CustomerID int,
Tarikh datetime,
constraint FK1 foreign key (Id) references Customer(Id)
)


کوئری لیست تمام مشتریان می آورد بعد آخرین تاریخ سفارششان هم نمایش می دهد
نکته اینه که باید left join کنی و گروه بندی بر اساس نام

select MAX(Tarikh),Fname from Customer left join [Order] on Customer.Id=[Order].CustomerID
group by (Fname)