Sql server 如何使用PIVOT从SQL中获取月份数据
我希望从该查询中获得年-月数据,以及相应的[待定]、[提交]、[确认]、[取消]、[失败]事务计数。基本上,我希望对挂起、提交、确认、取消和失败的月份事务计数 我正在使用Sql Server 2016 现在我得到了确切的数据,但月份被列出了两到三次 我想要如下格式的数据Sql server 如何使用PIVOT从SQL中获取月份数据,sql-server,pivot,sql-server-2016,Sql Server,Pivot,Sql Server 2016,我希望从该查询中获得年-月数据,以及相应的[待定]、[提交]、[确认]、[取消]、[失败]事务计数。基本上,我希望对挂起、提交、确认、取消和失败的月份事务计数 我正在使用Sql Server 2016 现在我得到了确切的数据,但月份被列出了两到三次 我想要如下格式的数据 SELECT * FROM ( SELECT YEAR(CreateDate) [Year], MONTH(CreateDate) [Month], DATENAME(MONTH,CreateDate) [Mon
SELECT * FROM (
SELECT YEAR(CreateDate) [Year], MONTH(CreateDate) [Month], DATENAME(MONTH,CreateDate) [Month Name],COUNT(id) [Total],
CASE
WHEN PaymentStatus = 1 THEN 'Pending'
WHEN PaymentStatus = 2 THEN 'Commited'
WHEN PaymentStatus = 3 THEN 'Confirmed'
WHEN PaymentStatus = 4 THEN 'Canceled'
WHEN PaymentStatus = 5 THEN 'Failed'
ELSE ''
END AS PaymentStatus,count(ID) as counts
FROM [dbo].[BankPaymentRequest]
GROUP BY YEAR(CreateDate), MONTH(CreateDate), DATENAME(MONTH, CreateDate), PaymentStatus) as asd
PIVOT( SUM(counts)
FOR PaymentStatus IN ([Pending],[Commited],[Confirmed],[Canceled],[Failed])) AS MNamePivot
请帮助我进行此类查询或任何其他查询。您可以尝试将现有查询放入a中,然后在对数字求和的同时按年和月分组
Year Month Total Pending Commited Confirmed Canceled Failed
2016 Jan 34 1 4 63 840 157
2016 Feb 34 8 4 62 8 15
2016 Mar 65 1 4 63 840 157
2016 Dec 56 8 4 62 8 15
2017 Jan 78 1 4 63 840 157
2017 Feb 89 8 4 62 8 15
2017 Mar 67 1 4 63 840 157
2017 Dec 8 4 62 8 15 345
首先,您需要确定您正在使用的DBMS。mysql sql server。然后,您需要提供一些细节,以便其他人能够提供帮助。这是一个很好的起点。如果您对sql server 2008有信心,那么请删除mysqlYes Bro,因为它对我非常有用。这给了我完美的结果。谢谢你。@Pramodlavate,不客气。如果您需要,请将其标记为已接受的答案。
WITH preselect AS
(
SELECT * FROM (
SELECT YEAR(CreateDate) [Year], MONTH(CreateDate) [Month], DATENAME(MONTH,CreateDate) [Month Name],COUNT(id) [Total],
CASE
WHEN PaymentStatus = 1 THEN 'Pending'
WHEN PaymentStatus = 2 THEN 'Commited'
WHEN PaymentStatus = 3 THEN 'Confirmed'
WHEN PaymentStatus = 4 THEN 'Canceled'
WHEN PaymentStatus = 5 THEN 'Failed'
ELSE ''
END AS PaymentStatus,count(ID) as counts
FROM [dbo].[BankPaymentRequest]
GROUP BY YEAR(CreateDate), MONTH(CreateDate), DATENAME(MONTH, CreateDate), PaymentStatus) as asd
PIVOT( SUM(counts)
FOR PaymentStatus IN ([Pending],[Commited],[Confirmed],[Canceled],[Failed])) AS MNamePivot
)
SELECT [YEAR],[MONTH],SUM(TOTAL)'TOTAL',SUM(Pending)'Pending'
,SUM(Commited)'Commited',SUM(Confirmed)'Confirmed'
,SUM(Canceled)'Canceled',SUM(Failed)'Failed'
FROM preselect
GROUP BY [YEAR],[MONTH]