我有一个表“ pay_schedule”,看起来像这样:
-------------------------------------------------- ---------------------------- 标题(char [50])| FilmId(int)付款(Dec(18,2))pay_date(日期)| -------------------------------------------------- ---------------------------- | 大秘密| -2147483648 | 900.00 | 4/9/2017 | 困惑 -2147483631 | 512.50 | 4/9/2017 | 困惑 -2147483631 | 325.94 | 4/9/2017 | 困惑 -2147483631 | 325.94 | 7/9/2017 | 明星们| -2147483639 | 512.5 | 7/9/2017 | 深深的| -2147483636 | 900 | 7/9/2017 | 深深的| -2147483636 | 900 | 2017年10月9日| ..... | ..... | ...... | ..... | 深深的| -2147483636 | 512.5 | 2017年10月9日| 深深的| -2147483636 | 325.94 | 2017年10月9日| 困惑 -2147483631 | 325.94 | 1/9/2018 | 星际之门| -2147483639 | 512.5 | 1/9/2018 | 困惑 -2147483639 | 900 | 1/9/2018 | Mirzya | -2147483639 | 900 | 4/9/2018 | 困惑 -2147483639 | 512.5 | 4/9/2018 | | | | |
我想得到以下结果:
开始日期:2017年1月1日结束日期:2019年12月31日 ---------------------------------- --------------------------------------- 月Y | 大秘密|深藏在| 困惑 明星们| | | | | | -------------------------------------------------- ---------------------- | 2017年4月| 900.00 | 0.00 | 838.44 | 0.00 | 2017年7月| 0.00 | 900.00 | 325.94 | 512.50 | 2017年10月| 0.00 | 1738.44 | 0.00 | 0.00 | 2018年1月| 0.00 | 0.00 | 1225.94 | 512.50 | 2018年4月| 900.00 | | 512.50 | | _________________________________________________________________________
**不包括没有付款的月份
感谢您的宝贵时间,并为您提供帮助。由于这是一张大桌子,如果您也指出可能的优化,我将不胜感激。祝你有美好的一天!
试试这个:
CREATE TABLE #tt(Title CHAR(50),FilmId INT,payout DECIMAL(18,2),pay_date DATE)
INSERT INTO #tt
SELECT 'Big Secret',-2147483648,900.00,'4/9/2017' UNION ALL
SELECT 'puzzled',-2147483631,512.50,'4/9/2017' UNION ALL
SELECT 'puzzled',-2147483631,325.94,'4/9/2017' UNION ALL
SELECT 'puzzled',-2147483631,325.94,'7/9/2017' UNION ALL
SELECT 'Star men',-2147483639,512.5 ,'7/9/2017' UNION ALL
SELECT 'Deep beneath',-2147483636,900,'7/9/2017' UNION ALL
SELECT 'Deep beneath',-2147483636,900,'10/9/2017' UNION ALL
SELECT 'Deep beneath',-2147483636,512.5 ,'10/9/2017' UNION ALL
SELECT 'Deep beneath',-2147483636,325.94,'10/9/2017' UNION ALL
SELECT 'puzzled',-2147483631,325.94,'1/9/2018' UNION ALL
SELECT 'Star ment',-2147483639,512.5 ,'1/9/2018 ' UNION ALL
SELECT 'puzzled',-2147483639,900,'1/9/2018' UNION ALL
SELECT 'Mirzya',-2147483639,900,'4/9/2018' UNION ALL
SELECT 'puzzled',-2147483639,512.5,'4/9/2018 '
SELECT @col1=ISNULL(@col1+',','')+QUOTENAME(RTRIM(Title)),@col2=ISNULL(@col2,'')+',ISNULL('+QUOTENAME(RTRIM(Title))+',0) AS '+QUOTENAME(RTRIM(Title)) FROM #tt GROUP BY RTRIM(Title)
PRINT @col2
SET @sql='SELECT LEFT(mon,3)+'' ''+LTRIM(yr) as [Month Y]'+@col2+' FROM ('+CHAR(13)+
' SELECT DATENAME(MONTH,pay_date) AS mon ,YEAR(pay_date) AS yr,RTRIM(Title) AS Title,SUM(payout) AS payout FROM #tt'+CHAR(13)+
' GROUP BY DATENAME(MONTH,pay_date) ,YEAR(pay_date),RTRIM(Title)'+CHAR(13)+
') AS t '+CHAR(13)+
'PIVOT(MAX(payout) FOR Title IN ('+@col1+')) p'
EXEC(@sql)
月Y大秘密深深地藏在Mirzya的迷惑之星中Star ment ---------------- ---------------------------------- ----------------- --------------------------------- ------ --------------------------------------- ----- ---------------------------------- ---------------- ----------------------- --------------------------- ------------ 2017年4月900.00 0.00 0.00 838.44 0.00 0.00 2017年7月0.00 900.00 0.00 325.94 512.50 0.00 2017年10月0.00 1738.44 0.00 0.00 0.00 0.00 2018年4月0.00 0.00 900.00 512.50 0.00 0.00 2018年1月0.00 0.00 0.00 1225.94 0.00 512.50
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句