sql - 使用 NVL 子句连接多个 Select 语句
问题描述
嗨,我在这里提前感谢所有帮助,
由于我对 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(列)的所有结果与查询 2(列ic.ITEM_NAME
)的匹配结果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 中不存在的记录
解决方案
我不认为这是NVL
您要寻找的,而是external join。
您发布的查询可用作 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
推荐阅读
- pandas - 如何在散点图多索引数据框中获取正确的标签
- mysql - 由于使用 woocommerce 优惠券生成器插件生成 400,000 张优惠券以及缓慢的 MySQL 服务器过载和响应,服务器响应极慢
- ios - 将缺少 json 属性的更新对象恢复为默认值
- swift - UITableViewCell 在滚动时继续改变它的图像
- mysql - SQL 按 2 列分组
- netbeans - 为 .env 文件定义文件类型
- python - python虚拟环境不知何故使用了错误的点子
- php - 用 Woocommerce 中特定国家/地区的城市下拉列表替换城市文本字段
- javascript - 从html发送udp数据包到本地网络
- centos - VirtualBox 机器有可用空间,但我收到磁盘空间不足错误/消息