Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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_Count_Group By_Distinct - Fatal编程技术网

使用SQL查询统计每个月的票证数量

使用SQL查询统计每个月的票证数量,sql,sql-server,count,group-by,distinct,Sql,Sql Server,Count,Group By,Distinct,我有一个名为Ticket的表,其中包含1000多条记录,如下所示: TicketNo TicketDate StateID 1 01/01/2013 100 2 05/01/2013 100 3 09/01/2013 101 4 15/01/2013 101 5 17/01/2013 102 6 01/02/2013 100 7 05/02/2013 100 8

我有一个名为Ticket的表,其中包含1000多条记录,如下所示:

TicketNo  TicketDate  StateID 
1         01/01/2013  100
2         05/01/2013  100
3         09/01/2013  101
4         15/01/2013  101
5         17/01/2013  102
6         01/02/2013  100
7         05/02/2013  100
8         08/02/2013  102
9         22/02/2013  103
10        28/02/2013  103
...
我想显示一年中每个月每个StateId的票数,例如:

StateID  FirstMonthCount  SecondMonthCount  Third...
100      2                2
101      2                0
102      1                1
103      0                2
...
我试图编写一个查询,但无法在每个月显示结果

  SELECT StateID, Count(StateID) AS Count, From Ticket
  WHERE TicketDate >= '01/01/2013' AND TicketDate <= '31/01/2013' 
  Group By StateID Order By StateID
您需要像这样旋转您的表:

SELECT
   StateID, [1] as FirstMonthCount, [2] as SecondMonthCount, ...
FROM
   (
      SELECT DATEPART(m, TicketDate) TheMonth, StateID 
      FROM tbl
      WHERE TicketDate >= '01/01/2013'
        AND TicketDate <= '31/12/2013'
   ) as src
PIVOT
   (
       COUNT(TheMonth)
       FOR TheMonth IN ([1], [2], ..., [12])
   ) as pvt

a会帮助像我这样懒惰的人;您的想法很好,但不起作用,第2行的错误无效列名“stateid”,您可以在@smartit中查看和编辑查询我的问题,已修复。您的回答非常有用,并在我的项目中帮助了我,非常感谢。