我有一个简单的任务:我需要查看已使用的付款方式以及不再使用的付款方式。这是我的架构:
SELECT [PAY_MODE_ID]
,[BILL_DATE]
FROM [dbo].[BILL_INFO]
所有付款方式均为:
1, Cash
2, Cheque
3, Debit
4, Free
5, Credit Card
6, Advanced Cash
7, Cash Card
8, Visa Electron
9, e-Pay
10, Bank Transfer
11, Third-Party Collections
我希望看到一个使用趋势,即每年每月使用多少付款方式。我希望看到哪种模式正在消亡。
答案 0 :(得分:1)
根据提供的信息(一些样本数据确实有帮助)我建议尝试这个查询 -
SELECT COUNT([PAY_MODE_ID])
,[PAY_MODE_ID]
FROM [dbo].[BILL_INFO]
GROUP BY [PAY_MODE_ID], MONTH([BILL_DATE]), YEAR([BILL_DATE])
这将根据使用的次数对所有可用的付款方式进行分组。
答案 1 :(得分:1)
如果您正在使用MS Excel这样的东西,请尝试第一位:
--Build sample dataset
CREATE TABLE #TMP([PAY_MODE_ID] TINYINT,[BILL_DATE] DATE)
GO
INSERT INTO #TMP
SELECT CAST(RAND()*11 AS TINYINT),DATEADD(DD,CAST(RAND()*365 AS INT),'20180101')
GO 10000
SELECT
[PAY_MODE_ID]
,MONTH([BILL_DATE]) AS [MonthNo]
,DATENAME(Month,[BILL_DATE]) AS [Month]
,COUNT(*) AS Cnt
FROM #TMP
GROUP BY
[PAY_MODE_ID]
,MONTH([BILL_DATE])
,DATENAME(Month,[BILL_DATE])
如果要在SQL环境中而不是在第三方工具中透视数据,请使用以下内容:
SELECT
[PAY_MODE_ID]
,January,February,March,April,May,June,July,August,September,October,November,December
FROM
(
SELECT
[PAY_MODE_ID]
,DATENAME(Month,[BILL_DATE]) AS [Month]
,COUNT(*) AS Cnt
FROM #TMP
GROUP BY
[PAY_MODE_ID]
,DATENAME(Month,[BILL_DATE])
) D
PIVOT
(SUM(Cnt) FOR [Month] IN (January,February,March,April,May,June,July,August,September,October,November,December)) M