如何查找同月和同年的所有记录? - SQL Server

时间:2015-12-21 18:34:39

标签: sql sql-server tsql

有一张如下图所示的表格。

enter image description here

如何进行查询以执行以下步骤:

1。查找KID=565然后

的所有记录

2。查找与此后KID=565相关的年度和月份相同的所有记录

对于第2阶段中找到的每条记录,

3。,必须完成此等式:

所有PCount * Score的总和。

例如:KID = 565有三条记录,其中包含年份和月份(2015-11-?),然后sum = (2*1000) + (1*1000) + (4*1000) = 7000,以及....

然后,结果必须插入另一个表中,如下图所示:

enter image description here

1 个答案:

答案 0 :(得分: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)