对此很困惑。
我正在尝试将一个表连接到自身。我有以下详细信息:
PRODUCT NO FORMAT NO FORMAT CODE NUMBER
1000 1111 P 0
1000 1112 O 0
1000 1113 H 546
我想创建一个输出所有“O”格式代码的 SELECT 语句,而不是在“NUMBER”列中输出“0”,我想输出“546”。它看起来像这样:
PRODUCT NO FORMAT NO FORMAT CODE NUMBER
1000 1112 O 546
所以我认为在这里我有效地将表格连接到自身?只是不确定该怎么做...
谢谢!
最佳答案
始终保持简单,使用所有可用的 Oracle 内置功能。</p>
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 O 0 546
在上面的查询中,您需要先执行排序,然后根据顺序和所需的输出使用 Oracle 内置的 LAG() 或 LEAD()。
关于oracle - 在 Oracle 中将表连接到自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28612074/