我有两个表查询(Oracle),我们称它们为 A 和 B。
A
ID SEQ
---- ----
1234 1
1235 3
B
ID TYPE SEQ NUM
---- ---- --- ---
1234 ORDER 1 10
1234 MODIFY 1 10
1235 ORDER 1 10
1235 MODIFY 1 10
1235 ORDER 2 11
1235 MODIFY 2 21
1235 ORDER 3 16
因此,表 A 包含一个唯一的行,其中有一个 SEQ 编号,每次表 B 上的某些更改时,该编号都会递增(表 B 的行为列出了一个历史表)。因此,在 ID 1234 的情况下,自写入行以来没有任何变化,因此 SEQ 为 1,并且表 B 上的两行的 SEQ 均为 1。
但是,ID 1235 自首次编写以来已经发生了三处更改。但在第三次更改中,仅更改了 ORDER 的类型。我想做的是用非规范化结果集表示两个 ID。类似于枢轴的东西。
所以,如果我要做类似的事情;
SELECT
A.ID
, MIN (CASE WHEN B.TYPE = 'ORDER' THEN NUM END) AS V_ORDER
, MIN (CASE WHEN B.TYPE = 'MODIFY' THEN NUM END) AS V_MODIFY
FROM A
, LEFT JOIN B ON B.ID = A.ID
AND B.SEQ = A.SEQ
GROUP BY A.ID
我只会得到 SEQ 匹配的结果。
ID V_ORDER V_MODIFY
---- ------- -------
1234 10 10
1235 16 NULL
我真正想要的是看到最大 SEQ 值的结果;
ID V_ORDER V_MODIFY
---- ------- -------
1234 10 10
1235 16 21
有什么想法吗?
谢谢 C