oracle - 在 Oracle 中将表连接到自身

标签 oracle join

对此很困惑。

我正在尝试将一个表连接到自身。我有以下详细信息:

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/

相关文章:

mysql - 使用连接嵌套子查询

php - 在 PHP 中合并两个数组

SQL JOIN 和不同类型的 JOIN

oracle - 为什么 Oracle 不支持 "group by 1,2,3"?

sql - Oracle - 整数数据类型精度最大值?我可以在整数字段中输入超过 38 个数字

sql - Oracle - 如何使用 'and' 创建不需要参数的过程

oracle - 如何使用 pl/sql 对 HMAC-SHA256 中的字符串进行编码?

SQL JOIN 多个表并获取 AVG

php - MYSQL Join Query Multiple Tables 部分字段显示重复结果

oracle - ORA-00947全局声明类型时值不足