Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择计数使用情况除以月份_Sql_Sql Server_Sql Server 2012 - Fatal编程技术网

Sql 选择计数使用情况除以月份

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

我确实有一个表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        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月是否合并在一起?还有,你只算一张执照吗?你好,马丁,谢谢你的回复,真的很有帮助。如果我确实希望它返回用户使用最多许可证的月份,而不是当月使用量,该怎么办?有可能吗?