【问题标题】:How to find all records in same month and year ? - SQL Server [duplicate]如何查找同一月份和同一年的所有记录? - SQL Server [重复]
【发布时间】:2015-12-21 18:34:38
【问题描述】:

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

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

1.然后查找所有带有KID=565 的记录

2.查找之后与KID=565相关的所有同年同月的记录

3.对于在第 2 阶段找到的每条记录,必须完成以下等式:

所有PCount * Score 的总和。

例如:KID = 565 有三个相同年份和月份的记录 (2015-11-?) 然后 sum = (2*1000) + (1*1000) + (4*1000) = 7000 和 ....

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

【问题讨论】:

  • Sql Server 的版本是多少?
  • @Giorgi Nakeuri,sql server 2008
  • @Tab Alleman,在您的链接中,日期必须在查询中手动输入。

标签: sql sql-server tsql


【解决方案1】:

可以按年和月分组:

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)

【讨论】:

    猜你喜欢
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多