使用 UNION 运算符组合的所有查询必须具有相等数量的表达式



我正在修改其他人的代码以调整所需的输出,但是,当我这样做时,我收到一条错误消息:所有使用 UNION、INTERSECT 或 EXCEPT 运算符组合的查询在其目标列表中必须具有相同数量的表达式。

更改前的代码(工作正常(:

DECLARE @Period CHAR(6)
SELECT  @Period = CONVERT(CHAR(6), GETDATE(),112)

select sum(CORPG) as CORPG, sum(FUNDS) as FUNDS, sum(EUCOM) as EUCOM, sum(INSUR) as INSUR, sum(IPIT) as IPIT, sum(LITGE) as LITGE, sum(FINR) as FINR,
sum(CNSTR) as CNSTR, sum(PLENV) as PLENV, sum(PLENV) as INSOL, sum(EMPLO) as EMPLO, sum(HELSC) as HELSC, sum(BANKG) as BANKG, sum(CONST) as CONST FROM (
Select TARGETFEESBILLED as CORPG, 0 as FUNDS, 0 as EUCOM, 0 as INSUR, 0 as IPIT, 0 as LITGE, 0 as FINR,
0 as CNSTR, 0 as PLENV, 0 as INSOL, 0 as EMPLO, 0 as HELSC, 0 as BANKG, 0 as CONST
from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'FUNDS' AND PERIOD=@PERIOD 
UNION
Select 0,TARGETFEESBILLED,0,0,0,0,0,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'EUCOM' and PERIOD=@PERIOD UNION
Select 0,0,TARGETFEESBILLED,0,0,0,0,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'EUCOM' and PERIOD=@PERIOD UNION
Select 0,0,0,TARGETFEESBILLED,0,0,0,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'INSUR' and PERIOD=@PERIOD UNION
Select 0,0,0,0,TARGETFEESBILLED,0,0,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'IPIT'  and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,TARGETFEESBILLED,0,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'LITGE' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,TARGETFEESBILLED,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'FINR'  and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,TARGETFEESBILLED,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'CNSTR' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,0,TARGETFEESBILLED,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'PLENV' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,0,0,TARGETFEESBILLED,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'INSOL' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,0,0,0,TARGETFEESBILLED,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'EMPLO' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,0,0,0,0,TARGETFEESBILLED,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'HELSC' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,0,0,0,0,0,TARGETFEESBILLED,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'BANKG' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,0,0,0,0,0,0,TARGETFEESBILLED from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'CONST' and PERIOD=@PERIOD ) Rollup

这是更改的代码(不起作用(:

DECLARE @Period CHAR(6)
SELECT  @Period = CONVERT(CHAR(6), GETDATE(),112)

select sum(CORPG) as CORPG, sum(FUNDS) as FUNDS, sum(EUCOM) as EUCOM, sum(INSUR) as INSUR, sum(IPIT) as IPIT, sum(LITGE) as LITGE, sum(FINR) as FINR,
sum(CNSTR) as CNSTR, sum(PLENV) as PLENV, sum(PLENV) as INSOL, sum(EMPLO) as EMPLO, sum(HELSC) as HELSC, sum(BANKG) as BANKG, sum(CONST) as CONST, sum(COEN) as COEN, sum(CLIM) as CLIM FROM (
Select TARGETFEESBILLED as CORPG, 0 as FUNDS, 0 as EUCOM, 0 as INSUR, 0 as IPIT, 0 as LITGE, 0 as FINR,
0 as CNSTR, 0 as PLENV, 0 as INSOL, 0 as EMPLO, 0 as HELSC, 0 as BANKG, 0 as CONST, 0 as COEN, 0 as CLIM
from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'FUNDS' AND PERIOD=@PERIOD 
UNION
Select 0,TARGETFEESBILLED,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'EUCOM' and PERIOD=@PERIOD UNION
Select 0,0,TARGETFEESBILLED,0,0,0,0,0,0,0,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'EUCOM' and PERIOD=@PERIOD UNION
Select 0,0,0,TARGETFEESBILLED,0,0,0,0,0,0,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'INSUR' and PERIOD=@PERIOD UNION
Select 0,0,0,0,TARGETFEESBILLED,0,0,0,0,0,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'IPIT'  and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,TARGETFEESBILLED,0,0,0,0,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'LITGE' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,TARGETFEESBILLED,0,0,0,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'FINR'  and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,TARGETFEESBILLED,0,0,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'CNSTR' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,0,TARGETFEESBILLED,0,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'PLENV' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,0,0,TARGETFEESBILLED,0,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'INSOL' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,0,0,0,TARGETFEESBILLED,0,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'EMPLO' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,0,0,0,0,TARGETFEESBILLED,0,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'HELSC' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,0,0,0,0,0,TARGETFEESBILLED,0,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'BANKG' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,0,0,0,0,0,0,TARGETFEESBILLED,0,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'CONST' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,0,0,0,0,0,0,0,TARGETFEESBILLED,0,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'CONST' and PERIOD=@PERIOD UNION
Select 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,TARGETFEESBILLED,0 from _ALG_TARGETFEESBILLED_PG where GROUP_CODE = 'CONST' and PERIOD=@PERIOD ) Rollup

一些指导表示赞赏。联合表明目标列表中没有足够的表达式,但据我所知。

谢谢

以下查询中的列数为 16 选择目标费用作为 CORPG,0 作为基金,0 作为 EUCOM,0 作为保险,0 作为 IPIT,0 作为 LITGE,0 作为 FINR, 0 作为 CNSTR,0 作为 PLENV,0 作为破产管理人员,0 作为 EMPLO,0 作为 HELSC,0 作为 BANKG,0 作为 CONST,0 作为 COEN,0 作为 CLIM 从。。。

但其他具有联合的查询有 17 列。

最新更新