به جای اینکه یک فیلد جدید درست کنید و جمع فروش رو توی اون نگه دارید یک View درست کنید که نتیجه مورد نظرتون رو تولید کنه بعد هر جایی که نیاز به این مقدار داشتید از این View بخونید. البته بستگی به میزان نیاز شما به این مقدارها داره ، اگر نیاز شما به این مقدارها خیلی زیاد (مثلا به ازا هر کاربر روزانه بیش از 100 بار) و یا تعداد رکوردهای این جدول خیلی زیاد (بازهم برای مثال بیش از 1000000 رکورد) وهمچنین سرعت محاسبه هم برای شما بسیار مهم است اضافه کردن یک فیلد ممکنه به صرفه تر باشه.
برای درست کردن View میتونید از دستور زیر کمک بگیرید.
چند داده نمونه و دستور :
With tbl as(
Select ID = 1, BookName = 'Book 1', SellDate = '1390/06/24', Price = 200
UNION ALL
Select ID = 2, BookName = 'Book 2', SellDate = '1390/06/24', Price = 150
UNION ALL
Select ID = 3, BookName = 'Book 3', SellDate = '1390/06/24', Price = 100
UNION ALL
Select ID = 4, BookName = 'Book 4', SellDate = '1390/06/25', Price = 50
UNION ALL
Select ID = 5, BookName = 'Book 5', SellDate = '1390/06/25', Price = 350
UNION ALL
Select ID = 6, BookName = 'Book 6', SellDate = '1390/06/25', Price = 425
UNION ALL
Select ID = 7, BookName = 'Book 7', SellDate = '1390/06/26', Price = 120
UNION ALL
Select ID = 8, BookName = 'Book 8', SellDate = '1390/06/26', Price = 200
UNION ALL
Select ID = 9, BookName = 'Book 9', SellDate = '1390/06/26', Price = 200
)
Select
T1.ID,
T1.BookName,
T1.SellDate,
T1.Price,
T2.TotalSellPrice
From
tbl T1 Left Outer JOIN (Select
MAX(ID) AS ID,
SUM(Price) AS TotalSellPrice
From
tbl
Group By
SellDate) T2
ON
T1.ID = T2.ID