开始日期和结束日期之间的每个项目的MS SQL Server查询总和

萨蒂亚·纳拉亚南(Sathya Narayanan)

我有一个表“ 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 | | 
    _________________________________________________________________________

**不包括没有付款的月份

感谢您的宝贵时间,并为您提供帮助。由于这是一张大桌子,如果您也指出可能的优化,我将不胜感激。祝你有美好的一天!

Nolan Shang

试试这个:

    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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在sql server中两个日期之间的年份,每个日期在sql server中的开始和结束日期

改进 SQL 查询以查找开始日期和结束日期之间的范围

T-SQL查询仅在开始日期和结束日期之间的发票

PL-SQL查询以计算从开始和结束日期开始的每个时期的客户

SQL Server-查询以检索列名称和列总和

Oracle SQL查询中的开始/结束日期和时间

基于服务日期列的 YTD 月份开始日期和结束日期 - SQL Server

查询 SQL Server 的总和结果

转换mysql查询中的记录以显示开始日期和结束日期之间的每个月

在SQL Server 2008中查找具有相同ID且开始日期和结束日期不同的员工每月两个日期之间的天差

根据输入的SQL Server和SSRS计算财政年度的开始日期和结束日期

如何在SQL Server中获取“完成年份”的星期数,开始日期和结束日期?

如何通过在 SQL Server 中选择周数来获取开始日期和结束日期

从开始日期等于开始日期和结束日期之间的sql中检索数据

SQL Server每个不同的总和

SQL查询以选择带有系统版本表的值的开始和结束日期时间

在SQL Server中按班次查询总和

选择一组学生的 SQL 查询,这些学生的学年开始和结束日期包含另一个表中的开始和结束日期?

SQL 查询从标记为“D”的任务中获取开始和结束日期(如果存在),否则为最小开始和结束日期

SQL Server:累积总和,缺少日期

SQL Server总和大于显示的日期

如何使用SQL Server使用开始/结束日期对象编写有效的查询?

SQL Server 2016 - 手动设置期间开始和结束日期时间

SQL Server:根据开始和结束日期将一行分成几行

如何在 SQL Server 中使用周数获取周的开始和结束日期?

将用户输入的开始日期和结束日期值传递到生成数据框的sql查询中

使用SQL Server中不同记录的开始日期和结束日期创建具有数据范围的临时表

ElasticSearch:查询今天是否在列表中的开始日期和结束日期之间和之间

SQL Server 日期差异查询和修剪