【问题标题】:How to combine several oracle select sql into one view?如何将多个oracle select sql合并到一个视图中?
【发布时间】:2012-09-16 02:44:42
【问题描述】:

我希望将这些选择的结果整合到一个视图中。公共列是 RUNID,但是右表的结果并不总是存在。所以它应该返回空。我认为所有这些选择都可以组合成一个选择,将 RUNID 传递给不同标准的每个计数。

--COUNT OF S16 ELIGIBLE ACCOUNTS
SELECT    PDDETAIL.RUNID, COUNT(*) AS "S16 ELIGIBLE ACCOUNTS"
FROM      PDDETAIL
LEFT JOIN PDSTAGES ON (PDDETAIL.PDID = PDSTAGES.PDID AND PDDETAIL.CUST_ID = PDSTAGES.CUST_ID)
WHERE     PDSTAGES.PDSTAGE = 'S16ELIGIBLE'
GROUP BY  PDDETAIL.RUNID
ORDER BY  PDDETAIL.RUNID ASC
;

--COUNT OF S16 MTO SUBMITTED
SELECT    PDDETAIL.RUNID,COUNT(*) AS "S16 MTO SUBMITTED"
FROM      PDDETAIL
LEFT JOIN PDSTAGES ON (PDDETAIL.PDID = PDSTAGES.PDID AND PDDETAIL.CUST_ID = PDSTAGES.CUST_ID)
WHERE     PDSTAGES.PDSTAGE = 'S16MTOREFRESHSUBMITTED'
GROUP BY  PDDETAIL.RUNID
ORDER BY  PDDETAIL.RUNID ASC
;

--COUNT OF S16 MTO RETURN FAILED
SELECT    PDDETAIL.RUNID,COUNT(*) AS "S16 MTO FAILED"
FROM      PDDETAIL
LEFT JOIN PDSTAGES ON (PDDETAIL.PDID = PDSTAGES.PDID AND PDDETAIL.CUST_ID = PDSTAGES.CUST_ID)
WHERE     PDSTAGES.PDSTAGE = 'S16MTORETURNFAILED'
GROUP BY  PDDETAIL.RUNID
ORDER BY  PDDETAIL.RUNID ASC
;

【问题讨论】:

    标签: sql oracle select join


    【解决方案1】:
    SELECT    
     PDDETAIL.RUNID,
     COUNT(CASE WHEN PDSTAGES.PDSTAGE = 'S16ELIGIBLE' THEN 1 END) AS "S16 ELIGIBLE ACCOUNTS",
     COUNT(CASE WHEN PDSTAGES.PDSTAGE = 'S16MTOREFRESHSUBMITTED' THEN 1 END) AS "S16 MTO SUBMITTED",
     COUNT(CASE WHEN PDSTAGES.PDSTAGE = 'S16MTORETURNFAILED' THEN 1 END) AS "S16 MTO FAILED"
    FROM      PDDETAIL
    LEFT JOIN PDSTAGES ON (PDDETAIL.PDID = PDSTAGES.PDID AND PDDETAIL.CUST_ID = PDSTAGES.CUST_ID)
    GROUP BY  PDDETAIL.RUNID
    ORDER BY  PDDETAIL.RUNID ASC;
    

    【讨论】:

      猜你喜欢
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多