2015-12-21 79 views
-2

有一張如下圖所示的表格。如何在同一月份和年份查找所有記錄? - SQL Server

enter image description here

我怎樣才能使一個查詢做下面的步驟:

查找與KID=565的所有記錄,然後

2.找到同一年中的所有記錄和與KID=565有關的月份

3.對於在階段2中找到的每個記錄,必須完成以下等式:

總和PCount * Score

例如:KID = 565有三個記錄與同年份和月份(2015-11-?)然後sum = (2*1000) + (1*1000) + (4*1000) = 7000,並....

之後,必須將結果插入另一個表像下圖:

enter image description here

+0

什麼是v Sql Server的問題? –

+0

@Giorgi Nakeuri,sql server 2008 – Farzaneh

+0

@Tab Alleman,在你的鏈接中,日期必須在查詢中手動輸入。 – Farzaneh

回答

4

可以在年和月分組完成:

declare @t table(KID int, BuyDate date, Pcount int, Score int) 

insert into @t values 
(565, '20151120', 2, 1000), 
(565, '20151125', 1, 1000), 
(565, '20151125', 4, 1000), 
(565, '20151220', 8, 1000), 
(565, '20151221', 2, 1000), 
(1, '20151206', 1, 1000), 
(1, '20151219', 1, 1000) 


select KID, 
     DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, max(BuyDate)) + 1, 0)) BuyDate, 
     SUM(Pcount * Score) BP, 
     MAX(Score) Score 
from @t 
where KID = 565 
group by KID, YEAR(BuyDate), MONTH(BuyDate)