如何解决使用 CASE 作为 JOIN ORACLE SQL 的一部分
我在 Oracle SQL Developer 中有一个查询,用于从原始表中获取数据(原始表上的所有数据都是 varchars),当我选择它时需要“清理”数据。必须使用 CASE 语句来获取商店编号,因为有时该数据不在 STORENBR 列中,但可以在另一列的子字符串中找到 -
<input onBlur={(event) => { event.target.value = ''; }} />
现在我还需要从另一个表中提取帐号(TRANSACTIONS t - 不是原始表,所以我不需要任何 CASE 或 TO_NUMBER 来提取数据)但我需要在 STORENBR、CONTROLNBR 上加入该表,和亚麻布。那么我如何使用 CASE 语句作为连接到 t.STORENBR 上的 JOIN m.STORENBR 的一部分?
解决方法
即使我不确定数据结构,以下语句也应该会有所帮助。 包含原始数据的表在子选择中“转换”,因此可以进行正常连接。
SELECT *
FROM (SELECT CASE
WHEN m.storenbr = '0'
AND ( Substr(m.sending_qmgr,1,5) = 'PDPOS' ) THEN
To_number(
( Substr(m.sending_qmgr,8,4) ))
WHEN m.storenbr = '0'
AND ( Substr(m.sending_qmgr,8) = 'PROD_POS' ) THEN
To_number(( Substr(m.sending_qmgr,9,4) ))
ELSE To_number(Nvl(m.storenbr,'0'))
END AS STORENBR,To_number(Nvl(m.controlnbr,'0')) AS CONTROLNBR,To_number(Nvl(m.linenbr,'0')) AS LINENBR,To_date(m.trandate,'YYYY-MM-DD') AS TRANDATE,To_number(Nvl(m.nummisprinted,'0.00'),'99.99') AS NUMMISPRINTED
FROM misprints_raw m) m1,TRANSACTION t
WHERE t.storenbr = m1.storenbr
AND t.controlnbr = m1.controlnbr
AND t.linenbr = m1.linenbr
AND m1.trandate = DATE '2021-03-15'
ORDER BY m1.storenbr;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。