[英]Union ALL not giving the column\ names for second group
我正在使用工具SQLDBx。 我非常喜歡順便說一句。 我有5組Select語句系列,然后在第一組之后創建了UNION ALL。 現在,它確實可以正確運行並顯示輸出,但未分配第二組的字段名稱。
例如。 我大大的
完成了模仿IBM i顯示屏所需的SQL。 屏幕共有5個產品組。 我希望有一個大型命令SQL,其中5個SQL使用UNION ALL。 這確實作為命令“編譯”。 但是,它僅引入第一部分字段,而不引入第二部分字段。 因此,該字段不包括在COMMAND的字段列表中。 PROGR2R2PST,
有一些不正確的方法來執行UNION ALL嗎? OUTPUT分配列名
第一組到第二組。 HLDGR1PUN 21454 87273
因此,如果我想使用一個帶有聯合ALL的大型SQL,它將無法正常工作。 除了UNION ALL,我還應該使用其他東西嗎?
SELECT
count(*) as PROGR1PST,
(
SELECT COALESCE(SUM(OdQty#),0)
FROM ASTCCDTA.OEORH48,ASTCCDTA.TRNSTAT2,ASTDTA.OEORD1
WHERE OHCOM# = TSCOM# AND OHORD# = TSORD# AND OHCOM# = ODCOM# AND OHORD# = ODORD#
AND TSSTAT IN('AEP','BGE')
AND OHORDT IN('RTR','INT','SAM')
AND OHREQD < replace(char(current date, iso), '-', '')
AND OHHLDC = ' '
AND ODPRLC = 'ENG'
AND substr(odprt#,1,5) <> 'NOENG' AND OHORD# in(SELECT a.TSORD# FROM ASTCCDTA.TRNSTAT2 a
WHERE a.tsstat IN('AEP','BGE','EAS','REL','STP'))
) AS PROGR1PUN,
(
SELECT count(*)
FROM ASTCCDTA.OEORH48,ASTCCDTA.TRNSTAT2,ASTCCDTA.OETRA99
WHERE OHCOM# = TSCOM# AND OHORD# = TSORD#
AND (otCOM# = OHCOM# AND OTORD#= OHORD# AND ottrnc = 'AQC')
AND TSSTAT IN('AEP','BGE')
AND OHORDT IN('RTR','INT','SAM')
AND OHREQD = replace(char(current date, iso), '-', '') AND OHHLDC = ' ' AND OHORD# in(SELECT a.TSORD# FROM ASTCCDTA.TRNSTAT2 a
WHERE a.tsstat IN('AEP','BGE','EAS','REL','STP'))
) AS PROGR1TOD,
(
etc..
UNION ALL
SELECT
count(*) as PROGR2R2PST,
(SELECT COALESCE(SUM(OdQty#),0) FROM ASTCCDTA.OEORH48,ASTCCDTA.TRNSTAT2,ASTDTA.OEORD1
WHERE OHCOM# = TSCOM# AND OHORD# = TSORD# AND OHCOM# = ODCOM# AND OHORD# = ODORD#
AND TSSTAT IN('AEP','BGE')
AND OHORDT IN('CUS','CIN','SMC','COC','DON')
AND OHREQD < replace(char(current date, iso), '-', '')
AND OHHLDC = ' '
AND ODPRLC = 'ENG'
AND substr(odprt#,1,5) <> 'NOENG' AND OHORD# in(SELECT a.TSORD# FROM ASTCCDTA.TRNSTAT2 a
WHERE a.tsstat IN('AEP','BGE','EAS','REL','STP'))
) AS PROGR2PUN,
我認為您無法通過“嵌套” SQL語句並將它們與UNION
來獲得所需的結果。 此結構可能有效,具體取決於您的要求:
SELECT 'Name1' AS Label , COUNT(*) AS The_Count
FROM table1
WHERE ...
UNION ALL
SELECT 'PROGR2R2PST', COUNT(*)
FROM table2
WHERE ...
UNION ALL
SELECT 'Name3', COUNT(*)
FROM table3
WHERE ...
這將使您每次選擇返回一行:
Label The_Count
--------------------
Name1 45867
PROGR2R2PST 22
Name3 1234
請注意,列名稱來自第一個select
。 如果這種格式不符合您的要求,請在問題或注釋中更明確地提出,我會盡力提供幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.