Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server中的复杂分组查询_Sql_Sql Server - Fatal编程技术网

SQL Server中的复杂分组查询

SQL Server中的复杂分组查询,sql,sql-server,Sql,Sql Server,下面是我的SQL查询。我需要更改它,这样我就可以获得每个wkld\u日期的总工作量或所有工作量。当我给出条件ssawd.wkld_date=201803时,此代码非常有效,但我希望它返回根据wkld_date分组的工作负载总和。请帮忙。非常感谢 select ISNULL(SUM(ssawd.WORKLOAD), 0) w3 from AGMT_MAN_SCH_SS ssams inner join AGMT_WKLD_SUMMARY_SS ssaws o

下面是我的SQL查询。我需要更改它,这样我就可以获得每个
wkld\u日期的总工作量或所有工作量。当我给出条件
ssawd.wkld_date=201803
时,此代码非常有效,但我希望它返回根据
wkld_date
分组的工作负载总和。请帮忙。非常感谢

select 
    ISNULL(SUM(ssawd.WORKLOAD), 0) w3  
from   
    AGMT_MAN_SCH_SS ssams 
inner join 
    AGMT_WKLD_SUMMARY_SS ssaws on ssams.SCHEDULE_ID = ssaws.SCHEDULE_ID 
                               and ssams.SNAP_DATE = ssaws.SNAP_DATE 
inner join 
    AGMT_WKLD_DETAIL_SS ssawd on ssaws.summary_id = ssawd.summary_id 
                              and ssaws.SNAP_DATE = ssawd.SNAP_DATE 
inner join 
    AGREEMENT ag on ssams.agmt_id = ag.AGMT_ID 
where 
    ssaws.STAFF_ID = 4331
    and ssawd.wkld_date = 201803 
    and ((ag.AGMT_ACTCPLTDATE is not null 
          and ag.AGMT_ACTCPLTDATE > '2018-01-01') 
          or ag.AGMT_ACTCPLTDATE is null) 
    and ((ag.AGMT_TERMDATE is not null 
          and ag.AGMT_TERMDATE > '2018-01-01') 
          or ag.AGMT_TERMDATE is null) 
    and dateadd(year, 10, ag.AGMT_ACTCOMMENTDATE) > '2018-01-01' 
    and UPPER(ssaws.POST_TYPE)  NOT LIKE UPPER('Unnamed')           
    and ssams.agmt_id != 140 
    and (ssams.INTM_SNAP_DATE in (select max(INTM_SNAP_DATE) 
                                  from AGMT_MAN_SCH ams 
                                  where ams.AGMT_ID = ag.AGMT_ID 
                                    and ams.SNAP_TYPE = 'I')  
         or ssams.LATEST_SNAP_DATE in (select max(LATEST_SNAP_DATE) 
                                       from  AGMT_MAN_SCH ams 
                                       where ams.AGMT_ID = ag.AGMT_ID 
                                         and ams.SNAP_TYPE = 'F')
        )

听起来你想要一个简单的分组语句。在您的情况下,它将如下所示:

SELECT ssawd.wkld_date, sum(ssawd.WORKLOAD) w3  
from AGMT_MAN_SCH_SS ssams 
inner join AGMT_WKLD_SUMMARY_SS ssaws on ssams.SCHEDULE_ID = ssaws.SCHEDULE_ID and ssams.SNAP_DATE = ssaws.SNAP_DATE 
inner join AGMT_WKLD_DETAIL_SS ssawd on  ssaws.summary_id = ssawd.summary_id and ssaws.SNAP_DATE = ssawd.SNAP_DATE 
inner join AGREEMENT ag on ssams.agmt_id = ag.AGMT_ID 
where ssaws.STAFF_ID = 4331
and  ((ag.AGMT_ACTCPLTDATE is not null and  ag.AGMT_ACTCPLTDATE > '2018-01-01') or ag.AGMT_ACTCPLTDATE is null) 
and  ((ag.AGMT_TERMDATE is not null and ag.AGMT_TERMDATE > '2018-01-01') or ag.AGMT_TERMDATE is null) 
and  dateadd(year, 10, ag.AGMT_ACTCOMMENTDATE) > '2018-01-01' 
and UPPER(ssaws.POST_TYPE)  NOT LIKE UPPER('Unnamed')           
and ssams.agmt_id != 140 
and (ssams.INTM_SNAP_DATE in 
            (select max(INTM_SNAP_DATE) from AGMT_MAN_SCH ams where ams.AGMT_ID = ag.AGMT_ID and ams.SNAP_TYPE = 'I' )  
    or ssams.LATEST_SNAP_DATE in 
            (select max(LATEST_SNAP_DATE) from AGMT_MAN_SCH ams where ams.AGMT_ID = ag.AGMT_ID and ams.SNAP_TYPE = 'F'))
GROUP BY  ssawd.wkld_date

注意,我已经从WHERE语句中删除了ssawd.wkld_date,将其添加到返回的字段中,并在GROUP BY语句的末尾使用它

听起来你想要一个简单的groupby语句。在您的情况下,它将如下所示:

SELECT ssawd.wkld_date, sum(ssawd.WORKLOAD) w3  
from AGMT_MAN_SCH_SS ssams 
inner join AGMT_WKLD_SUMMARY_SS ssaws on ssams.SCHEDULE_ID = ssaws.SCHEDULE_ID and ssams.SNAP_DATE = ssaws.SNAP_DATE 
inner join AGMT_WKLD_DETAIL_SS ssawd on  ssaws.summary_id = ssawd.summary_id and ssaws.SNAP_DATE = ssawd.SNAP_DATE 
inner join AGREEMENT ag on ssams.agmt_id = ag.AGMT_ID 
where ssaws.STAFF_ID = 4331
and  ((ag.AGMT_ACTCPLTDATE is not null and  ag.AGMT_ACTCPLTDATE > '2018-01-01') or ag.AGMT_ACTCPLTDATE is null) 
and  ((ag.AGMT_TERMDATE is not null and ag.AGMT_TERMDATE > '2018-01-01') or ag.AGMT_TERMDATE is null) 
and  dateadd(year, 10, ag.AGMT_ACTCOMMENTDATE) > '2018-01-01' 
and UPPER(ssaws.POST_TYPE)  NOT LIKE UPPER('Unnamed')           
and ssams.agmt_id != 140 
and (ssams.INTM_SNAP_DATE in 
            (select max(INTM_SNAP_DATE) from AGMT_MAN_SCH ams where ams.AGMT_ID = ag.AGMT_ID and ams.SNAP_TYPE = 'I' )  
    or ssams.LATEST_SNAP_DATE in 
            (select max(LATEST_SNAP_DATE) from AGMT_MAN_SCH ams where ams.AGMT_ID = ag.AGMT_ID and ams.SNAP_TYPE = 'F'))
GROUP BY  ssawd.wkld_date

注意,我已经从WHERE语句中删除了ssawd.wkld_date,将其添加到返回的字段中,并在GROUP BY语句的末尾使用它

您好,谢谢您的回复,我试过了,但没有返回任何一行。不要回答重复的问题。您好,谢谢您的回复,我试过了,但没有返回任何一行。不要回答重复的问题。可能的重复可能的重复