【发布时间】:2017-02-12 20:57:18
【问题描述】:
我有一个表“pay_schedule”,如下所示:
-------------------------------------------------- ---------------------------- 标题 (char[50]) | FilmId (int) payout (Dec(18,2)) pay_date (date) | -------------------------------------------------- ----------------------------------------| 大秘密 | -2147483648 | 900.00 | 2017 年 4 月 9 日 | 不解 | -2147483631 | 512.50 | 2017 年 4 月 9 日 | 不解 | -2147483631 | 325.94 | 2017 年 4 月 9 日 | 不解 | -2147483631 | 325.94 | 2017 年 7 月 9 日 | 明星男装 | -2147483639 | 512.5 | 2017 年 7 月 9 日 | 深处 | -2147483636 | 900 | 2017 年 7 月 9 日 | 深处 | -2147483636 | 900 | 2017 年 10 月 9 日 | 深处 | -2147483636 | 512.5 | 2017 年 10 月 9 日 | 深处 | -2147483636 | 325.94 | 2017 年 10 月 9 日 | 不解 | -2147483631 | 325.94 | 2018 年 1 月 9 日 | 明星 | -2147483639 | 512.5 | 2018 年 1 月 9 日 | 不解 | -2147483639 | 900 | 2018 年 1 月 9 日 | 米尔扎 | -2147483639 | 900 | 2018 年 4 月 9 日 | 不解 | -2147483639 | 512.5 | 2018 年 4 月 9 日 | ..... | .......... | ...... | ..... | | | | |我想得到一个结果:
- 每月每个标题的总和(支付)
- 在开始日期和结束日期之间每月的总支出。如下图所示:
** 没有付款的月份不包括在内
非常感谢您的宝贵时间和帮助。由于这是一个大表,如果您也指出可能的优化,我将不胜感激。祝你有美好的一天!
【问题讨论】:
-
除了示例中显示的 4 个标题之外,您还能拥有更多标题吗?
-
@vkp 是的,可能在 100 秒内,唯一的限制是开始日期和结束日期,或者可能将其分解为 20 个左右的标题。
-
感谢 @Joel Coehoom 和 Happy Town 进行格式编辑。我觉得很傻,但还是不怎么!还是谢谢。
-
对于答案...看看 PIVOT 关键字。但即使使用此关键字,您仍然必须在编写查询时能够知道结果中预期的列的数量和名称,或者您'将被卡住使用动态 sql。
标签: sql sql-server tsql