Sql query to generate counts by month
- skarbnik

- Sep 29, 2016
- 1 min read
SELECT d.Company, d.[Year], SUM(CASE WHEN [Month] = 01 THEN Transactions ELSE 0 END) AS Jan, SUM(CASE WHEN [Month] = 02 THEN Transactions ELSE 0 END) AS Feb, SUM(CASE WHEN [Month] = 03 THEN Transactions ELSE 0 END) AS Mar, SUM(CASE WHEN [Month] = 04 THEN Transactions ELSE 0 END) AS Apr, SUM(CASE WHEN [Month] = 05 THEN Transactions ELSE 0 END) AS May, SUM(CASE WHEN [Month] = 06 THEN Transactions ELSE 0 END) AS Jun, SUM(CASE WHEN [Month] = 07 THEN Transactions ELSE 0 END) AS Jul, SUM(CASE WHEN [Month] = 08 THEN Transactions ELSE 0 END) AS Aug, SUM(CASE WHEN [Month] = 09 THEN Transactions ELSE 0 END) AS Sep, SUM(CASE WHEN [Month] = 10 THEN Transactions ELSE 0 END) AS Oct, SUM(CASE WHEN [Month] = 11 THEN Transactions ELSE 0 END) AS Nov, SUM(CASE WHEN [Month] = 12 THEN Transactions ELSE 0 END) AS [Dec], SUM(Transactions) AS Total, SUM(Transactions)/24 AS Average FROM (--Derived table "d" finds count for year and month SELECT Company, [Year] = DATEPART(yy,TransactionDate), [Month] = DATEPART(mm,TransactionDate) Transactions = COUNT(*) FROM yourtable GROUP BY Company, DATEPART(yy,TransactionDate), DATEPART(mm,TransactionDate) ) d GROUP BY d.Company, d.[Year] WITH ROLLUP ORDER BY d.Company, d.[Year]

Comments