我不會進入細節爲您的查詢但是請檢查下面的邏輯來創建單獨的列,如果這是你想要的東西缺少右括號...
Select ID, Type, IDH, DMVOL from
(Select ID, Type, count(distinct HORDER.H_ORDER_BK) IDH, 0 DMVOL from Table_A
Union All
Select ID, Type, 0 IDH, count(distinct ordmast_srcid) DMVOL from Table_B)
PS:我無法打開圖像鏈接。
編輯:試試這個]
Select sys_db_name,entity_id,ORD_DEL_DT,SUM(IDH) IDH, Sum(DM_VOL) DM_VOL from (
SELECT 'IDH' tb1,LDELIVERYORDER.sys_db_name sys_db_name,
SORDERMAIN.ENTITY_ID ENTITY_ID,
TO_NUMBER (TO_CHAR (ORD_DEL_DT, 'YYYYMMDD')) ORD_DEL_DT,
count(distinct HORDER.H_ORDER_BK) IDH,
0 DM_VOL
FROM INT_CDW_DV.L_DELIVERY_ORDER LDELIVERYORDER
INNER JOIN
INT_CDW_DV.H_ORDER HORDER
ON HORDER.H_ORDER_ID = LDELIVERYORDER.H_ORDER_ID
AND HORDER.SYS_DB_NAME = LDELIVERYORDER.SYS_DB_NAME
AND HORDER.SYS_DB_NAME in ('AS')
INNER JOIN
(SELECT S_ORDER_MAIN.ENTITY_ID,
S_ORDER_MAIN.H_ORDER_ID,
S_ORDER_MAIN.SYS_DB_NAME
FROM INT_CDW_DV.S_ORDER_MAIN
INNER JOIN
( SELECT S_ORDER_MAIN.H_ORDER_ID,
S_ORDER_MAIN.SYS_DB_NAME,
MAX (S_ORDER_MAIN.SYS_VALID_FROM_DTS)
AS SYS_VALID_FROM_DTS
FROM INT_CDW_DV.S_ORDER_MAIN
WHERE S_ORDER_MAIN.SYS_DB_NAME in ('AS')
GROUP BY S_ORDER_MAIN.H_ORDER_ID, S_ORDER_MAIN.SYS_DB_NAME) b
ON S_ORDER_MAIN.H_ORDER_ID = b.H_ORDER_ID
AND S_ORDER_MAIN.SYS_VALID_FROM_DTS =
b.SYS_VALID_FROM_DTS
AND S_ORDER_MAIN.SYS_DB_NAME = b.SYS_DB_NAME) SORDERMAIN
ON HORDER.H_ORDER_ID = SORDERMAIN.H_ORDER_ID
AND HORDER.SYS_DB_NAME = SORDERMAIN.SYS_DB_NAME
INNER JOIN
(SELECT S_DELIVERY_MAIN.ORD_DEL_DT,
S_DELIVERY_MAIN.H_DELIV_ID,
S_DELIVERY_MAIN.SYS_DB_NAME
FROM INT_CDW_DV.S_DELIVERY_MAIN
INNER JOIN
( SELECT S_DELIVERY_MAIN.H_DELIV_ID,
S_DELIVERY_MAIN.SYS_DB_NAME,
MAX (S_DELIVERY_MAIN.SYS_VALID_FROM_DTS)
AS SYS_VALID_FROM_DTS
FROM INT_CDW_DV.S_DELIVERY_MAIN
WHERE
S_DELIVERY_MAIN.SYS_DB_NAME in ('AS')
GROUP BY S_DELIVERY_MAIN.H_DELIV_ID,
S_DELIVERY_MAIN.SYS_DB_NAME) b
ON S_DELIVERY_MAIN.H_DELIV_ID = b.H_DELIV_ID
AND S_DELIVERY_MAIN.SYS_VALID_FROM_DTS =
b.SYS_VALID_FROM_DTS
AND S_DELIVERY_MAIN.SYS_DB_NAME = b.SYS_DB_NAME) SDELIVERYMAIN
ON LDELIVERYORDER.H_DELIV_ID = SDELIVERYMAIN.H_DELIV_ID
AND LDELIVERYORDER.SYS_DB_NAME = SDELIVERYMAIN.SYS_DB_NAME
WHERE ORD_DEL_DT between to_date ('20170717', 'YYYYMMDD') and to_date ('20170723', 'YYYYMMDD')
and LDELIVERYORDER.sys_db_name in ('AS') and SORDERMAIN.ENTITY_ID = 26
group by LDELIVERYORDER.sys_db_name,
SORDERMAIN.ENTITY_ID,
TO_NUMBER (TO_CHAR (ORD_DEL_DT, 'YYYYMMDD'))
order by LDELIVERYORDER.sys_db_name,
SORDERMAIN.ENTITY_ID,
TO_NUMBER (TO_CHAR (ORD_DEL_DT, 'YYYYMMDD'))
UNION ALL
select 'DMVOL' tb2,sys_db_name,entity_id,shipping_dayid ORD_DEL_DT, 0 IDH, count(distinct ordmast_srcid) DM_VOL
from int_pub_edw.dm_valid_order_line
where shipping_dayid between 20170717 and 20170723
and sys_db_name = 'AS'
and entity_id = 26
and valid_order=1
group by sys_db_name,entity_id,shipping_dayid
) group by sys_db_name,entity_id,ORD_DEL_DT
我曾嘗試和更新了我的答案的問題,但我得到的錯誤在UNION缺少右paranthesis所有的線路也已經更新了我的答案,並添加透視條件的底部但不知道其是否正確 – Andrew
@Andrew嘗試我編輯的答案。 – pOrinG
它在UNION ALL中給出了與缺少括號相同的錯誤 – Andrew