Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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按总和和空值分组_Sql_Sql Server_Group By - Fatal编程技术网

SQL按总和和空值分组

SQL按总和和空值分组,sql,sql-server,group-by,Sql,Sql Server,Group By,我有一个查询,它通过GROUP BY获取某个日期的数量之和,但该查询给我的是NULL结果,而不是聚合某些值 以下是查询: Select VPC.Armazem as TARMA ,YEAR(VPC.data) as DataTotal ,CASE WHEN VP.combustivel = 1 THEN ISNULL(SUM(VPL.QTD), 0) END as ADITIVADA ,CASE WHEN VP.combustivel = 2 THEN IS

我有一个查询,它通过
GROUP BY
获取某个日期的数量之和,但该查询给我的是
NULL
结果,而不是聚合某些值

以下是查询:

Select  
     VPC.Armazem as TARMA
    ,YEAR(VPC.data) as DataTotal
    ,CASE WHEN VP.combustivel = 1 THEN ISNULL(SUM(VPL.QTD), 0) END as ADITIVADA
    ,CASE WHEN VP.combustivel = 2 THEN ISNULL(SUM(VPL.QTD), 0) END as X98
    ,CASE WHEN VP.combustivel = 3 THEN ISNULL(SUM(VPL.QTD), 0) END as X95
    ,CASE WHEN VP.combustivel = 4 THEN ISNULL(SUM(VPL.QTD), 0) END as XGAS
    ,CASE WHEN VP.combustivel = 5 THEN ISNULL(SUM(VPL.QTD), 0) END as XGPL
    ,CASE WHEN VP.combustivel = 6 THEN ISNULL(SUM(VPL.QTD), 0) END as XAGR
    ,CASE WHEN VP.combustivel = 7 THEN ISNULL(SUM(VPL.QTD), 0) END as MISTURA
    ,CASE WHEN VP.combustivel = 9 THEN ISNULL(SUM(VPL.QTD), 0) END as XAQ
    ,CASE WHEN VP.combustivel = 10 THEN ISNULL(SUM(VPL.QTD), 0) END as ADIESEL
    ,CASE WHEN VP.combustivel = 11 THEN ISNULL(SUM(VPL.QTD), 0) END as ADBLUE
    ,CASE WHEN VP.combustivel = 12 THEN ISNULL(SUM(VPL.QTD), 0) END as O95
    ,CASE WHEN VP.combustivel = 13 THEN ISNULL(SUM(VPL.QTD), 0) END as O98
FROM
    where
    (MONTH(VPC.data) >= MONTH('2015-09-01') AND MONTH(VPC.data) <= MONTH('2015-09-01'))
    and (YEAR(VPC.data) >= YEAR('2014-09-01') AND YEAR(VPC.data) <= YEAR('2015-09-01'))
    and (VPT.armazem='454' or Len('454')=0)
    and FACT_VD NOT IN ('A', 'I', 'G', 'M')
GROUP BY
     YEAR(VPC.data)
    ,VPC.Armazem
    ,VP.combustivel
ORDER BY
     VPC.Armazem
    ,YEAR(VPC.data)
选择
VPC.Armazem as TARMA
,年份(专有网络数据)作为数据总计
,当VP.combustivel=1时,则为null(和(VPL.QTD),0)以ADITIVADA结尾
,当VP.combustivel=2时,则为NULL(和(VPL.QTD),0)结束为X98
,当VP.combustivel=3时,则为NULL(总和(VPL.QTD),0)结束为X95
,当VP.combustivel=4时,则为NULL(总和(VPL.QTD),0)以XGAS结束
,当VP.combustivel=5时,则为NULL(和(VPL.QTD),0)结束为XGPL
,当VP.combilivel=6时,则为null(SUM(VPL.QTD),0)以XAGR结束
,当VP.combustivel=7时,则为NULL(和(VPL.QTD),0)结束为MISTURA
,当VP.combilivel=9时,则为null(和(VPL.QTD),0)以XAQ结束
,当VP.combustivel=10时,则为NULL(总和(VPL.QTD),0)以ADIESEL结束
,当VP.combustivel=11时,则为NULL(总和(VPL.QTD),0)以ADBLUE结束
,当VP.combustivel=12时,则为空(和(VPL.QTD),0)结束为O95
,当VP.combustivel=13时,则为NULL(总和(VPL.QTD),0)结束为O98
从…起
哪里

(月(专有网络数据)>=月('2015-09-01')和月(专有网络数据)=年('2014-09-01')和年(专有网络数据)我怀疑您需要条件聚合:

Select VPC.Armazem as TARMA, YEAR(VPC.data) as DataTotal,
       SUM(CASE WHEN VP.combustivel = 1 THEN VPL.QTD ELSE 0 END) as ADITIVADA,
       SUM(CASE WHEN VP.combustivel = 2 THEN VPL.QTD ELSE 0 END) as X98,
       . . .
FROM . . .
GROUP BY YEAR(VPC.data), VPC.Armazem
. . .

请注意,
VP.combustivel
不在
GROUP BY

中,请从SELECT列表(聚合函数参数除外)和GROUP BY.Yup中删除其他列!完成了!谢谢:)