0
我有几个表看起来像这样选择计数
Table1
Name varchar
ID int
Table2
ID int
Run_Date datetime
我想在一列中选择名称,然后日期的计数变成2列。 1列将是上周每个姓名的所有日期,第二列将是本周的每个姓名的所有计数。结果看起来像这样的事情
所以,如果我的表看起来像这样
Table1
Name1 1
Name2 2
Name3 3
Table2
1 2016-11-21 8:40:23.570
2 2016-11-21 8:50:23.570
1 2016-11-21 9:40:23.570
1 2016-11-21 10:40:23.570
1 2016-11-16 10:40:23.570
2 2016-11-16 10:40:23.570
3 2016-11-21 8:40:23.570
我的结果会看起来像
Name This_Week Last_week
Name1 3 1
Name2 1 1
Name3 1 0
我可以分别获得价值做
WHERE DATEPART(wk, Run_Date) = DATEPART(wk, GETDATE()) AND DATEPART(yy, Run_Date) = DATEPART(yy, GETDATE())
我只是在一周后添加-1来获取上周的所有内容。我怎样才能让这些在同一张桌子上并排显示?
我试图做一个CASE
COUNT(CASE WHEN DATEPART(wk, Run_DATE) = DATEPART(wk, GETDATE()) AND DATEPART(yy, Run_Date) = DATEPART(yy, GETDATE()) THEN 1 ELSE 0 END) AS This_Week
但它看起来像它只是计算的所有名称在数据库中的所有日期。
感叹。我应该看到这一点。感谢马特 – maltman
没问题,我很确定,很容易忽略自己做了几次。另一种解决方法是将其更改为SUM(...),然后按照原样保留case语句。计数是很好的,但例如,如果你想计算DISTINCT ID,日期等,因为与SUM不能完成 – Matt