2017-07-31 6 views
0

UNION ALLを使用して2つのクエリを結合しました。 count(distinct ID)列の場合、count(distinct src_id)列の場合、クエリ結果は別の列になければなりません。 count(distinct id)の場合、エイリアスはIDlになり、count(distinct SRC_ID)のエイリアスはVOLになります。また、私のクエリの結果はExcelで述べたようになります。クエリ結果をExcelに貼り付けたいので、この形式でこの結果が必要です。クエリ自体で書式を設定すると、手動による作業量が減ります。私は以前に直接PLSQLプロシージャを使用してExcelで結果を取得しようとしましたが、非常に複雑に見えます。私はUNION ALL異なるクエリを使用してクエリ結果をExcel形式で並べ替える方法

Select * from (
SELECT ID,src_id    
    FROM ckt_GRP 
     ) 
UNION ALL 
select ID,src_id from TEST_GRP 
) 
pivot(count(distinct id) for tbl in('IDl' IDl)) 
pivot(count(distinct src_id) for tb2 in('VOL' VOL)) 

答えて

0

を使用している右括弧が欠落していて、私はそれはあなたが望んでいる場合は、別の列を作成するには、以下のロジックを確認してください、私はあなたのクエリのために具体的に行かないだろう、エラーメッセージを取得しています...

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 
+0

は、私が試したし、質問に私の答えを更新しましたが、私はUNIONですべてのラインを右paranthesisを逃すようなエラーを取得していますし、また、私は私の答えを更新したとのピボット条件を追加した[これを試してみてください]下が、正しいかどうかわからない – Andrew

+0

@Andrew私の編集した答えを試してみてください。 – pOrinG

+0

UNION ALLに括弧がないと同じエラーが発生する – Andrew

関連する問題