对这个很困惑。
我正在尝试将一个表连接到其自身。我有以下详细信息:
PRODUCT NO FORMAT NO FORMAT CODE NUMBER
1000 1111 P 0
1000 1112 O 0
1000 1113 H 546
我想创建一个输出所有“O”格式代码的 SELECT 语句,但我想输出“546”,而不是在“NUMBER”列中输出“0”。它看起来像这样:
PRODUCT NO FORMAT NO FORMAT CODE NUMBER
1000 1112 O 546
所以我认为我在这里有效地将表格连接到其自身?只是不知道该怎么做......
Thanks!
始终保持简单,使用所有可用的 Oracle 内置功能。
SELECT * FROM
(
SELECT FORMAT_NO, FORMAT_CODE, SEQ
, (CASE WHEN FORMAT_CODE = 'O' THEN LAG(seq, 1, 0) OVER (ORDER BY FORMAT_CODE) END) nn_seq
FROM
(
SELECT 1000 PRODUCT_NO, 1111 FORMAT_NO, 'P' FORMAT_CODE, 0 SEQ FROM dual
UNION
SELECT 1000, 1112, 'O', 0 FROM dual
UNION
SELECT 1000, 1113, 'H', 546 FROM dual
)
ORDER BY 2
)
WHERE FORMAT_CODE = 'O'
/
输出:
1112 欧 0 546
在上面的查询中,您需要首先执行排序,然后根据顺序和所需的输出使用 Oracle 内置的 LAG() 或 LEAD()。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)