【问题标题】:Join multiple Select Statements using an NVL Clause使用 NVL 子句连接多个 Select 语句
【发布时间】:2021-11-06 11:53:18
【问题描述】:

您好,我在这里提前感谢所有帮助,

由于我对 SQL 和联接类型相当陌生,因此在这里寻求一些帮助

查询 1

(select ic.ITEM_ID, ic.ITEM_NAME
from ITEM_CBO ic 
where COLOR_DESC = 'BRAND');

查询 2

(select ptt.ITEM_ID, TO_CHAR(MAX(DISTINCT(ptt.CREATE_DATE_TIME)), 'dd/mm/yyyy') as "Last Trans Date"
from PROD_TRKG_TRAN ptt
where ptt.TRAN_TYPE = 500 and ptt.TRAN_CODE = 010 and ptt.MENU_OPTN_NAME = 'LOA Pck Pick Cart'
Group By ptt.ITEM_ID);

查询 3

(select wi.ITEM_ID, sum(wi.ON_HAND_QTY)
from WM_INVENTORY wi
where wi.ITEM_ID in (SELECT ic.ITEM_ID from ITEM_CBO ic where COLOR_DESC = 'BRAND')
group by wi.ITEM_ID);

我正在尝试加入上述查询的结果以返回以下内容

查询 1 的所有结果(列 ic.ITEM_NAME) 匹配结果来自 查询2(列TO_CHAR(MAX(DISTINCT(ptt.CREATE_DATE_TIME)), 'dd/mm/yyyy') as "Last Trans Date") 查询 3 (sum(wi.ON_HAND_QTY)

可以在每个子查询中使用 ITEM_ID 执行所有联接,

不太确定如何包含 NVL 以说明查询 2 和 3 中不存在的记录

【问题讨论】:

    标签: sql oracle join subquery nvl


    【解决方案1】:

    我认为您要查找的不是NVL,而是外部加入

    您发布的查询可用作 CTE。

    所以:

    with 
    q1 as
      (select ic.ITEM_ID, ic.ITEM_NAME
       from ITEM_CBO ic 
       where COLOR_DESC = 'BRAND'),
    q2 as
      (select ptt.ITEM_ID, 
         TO_CHAR(MAX(ptt.CREATE_DATE_TIME), 'dd/mm/yyyy') as last_trans_date
       from PROD_TRKG_TRAN ptt
       where ptt.TRAN_TYPE = 500 
         and ptt.TRAN_CODE = '010' 
         and ptt.MENU_OPTN_NAME = 'LOA Pck Pick Cart'
       group By ptt.ITEM_ID
      ),
    q3 as
      (select wi.ITEM_ID, 
         sum(wi.ON_HAND_QTY) as sum_on_hand_qty
       from WM_INVENTORY wi
       where wi.ITEM_ID in (SELECT ic.ITEM_ID 
                            from ITEM_CBO ic 
                            where COLOR_DESC = 'BRAND')
       group by wi.ITEM_ID
      )
    -- final query
    select a.item_id, a.item_name, b.last_trans_date, c.sum_on_hand_qty
    from q1 a left join q2 b on a.item_id = b.item_id
              left join q3 c on c.item_id = a.item_id
    

    【讨论】:

    • diatinct 可以在聚合函数中使用,但对max/min 没有意义
    • 确实如此,@astentx。谢谢;删除了该反对意见。
    猜你喜欢
    • 2016-06-21
    • 2011-09-18
    • 1970-01-01
    • 2015-04-09
    • 2018-11-25
    • 2011-12-30
    • 1970-01-01
    • 2021-06-16
    • 2018-04-16
    相关资源
    最近更新 更多