Sql 选择计数使用情况除以月份
我确实有一个表license\u Usage,其中的工作方式类似于一天中许可证使用情况的日志Sql 选择计数使用情况除以月份,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我确实有一个表license\u Usage,其中的工作方式类似于一天中许可证使用情况的日志 ID User license date 1 1 A 22/1/2015 2 1 A 23/1/2015 3 1 B 23/1/2015 4 1 A 24/1/2015 5 2 A
ID User license date
1 1 A 22/1/2015
2 1 A 23/1/2015
3 1 B 23/1/2015
4 1 A 24/1/2015
5 2 A 22/2/2015
6 2 A 23/2/2015
7 1 B 23/2/2015
如果我想计算一个用户每月使用的许可证数量,结果应该如下所示:
User Jan Feb
1 2 1 ...
2 0 2
我怎样才能做到这一点呢?您需要一个数据透视或跨表查询。e、 g
SELECT [User],
COUNT(CASE WHEN Month = 1 THEN 1 END) AS Jan,
COUNT(CASE WHEN Month = 2 THEN 1 END) AS Feb,
COUNT(CASE WHEN Month = 3 THEN 1 END) AS Mar
/*TODO - Fill in other 9 months using above pattern*/
FROM [license]
CROSS APPLY (SELECT MONTH([date])) AS CA(Month)
WHERE [date] >= '20150101'
AND [date] < '20160101'
AND [license] = 'A'
GROUP BY [User]
这最好在表示层中完成。您的查询是否有限制到给定日历年的where子句?如果不是,2014年1月和2015年1月是否合并在一起?还有,你只算一张执照吗?你好,马丁,谢谢你的回复,真的很有帮助。如果我确实希望它返回用户使用最多许可证的月份,而不是当月使用量,该怎么办?有可能吗?