使用SQL查询统计每个月的票证数量
我有一个名为Ticket的表,其中包含1000多条记录,如下所示:使用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
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中查看和编辑查询我的问题,已修复。您的回答非常有用,并在我的项目中帮助了我,非常感谢。