我有如下的oracle表数据:
ID ColA ColB ColC ColD ColE ColF
1 null null null D1 E1 F1
1 A1 B1 C1 null null null
1 A2 B2 C2 null null null
我想要类似
的记录ID ColA ColB ColC ColD ColE ColF
1 A1 B1 C1 D1 E1 F1
1 A2 B2 C2 D1 E1 F1
基本上, 单个ID可以有多个ColA行,并且ColD,E和F始终为空。 因此,在所有ID @ ColA组合(ColA不为null的情况下)下,我都想用与相同ID的ColD,E和F对应的值(其中ColA为null)填充D,E和F
答案 0 :(得分:0)
我在这里可以看到的一种可能方法是,在以下三个条件下自行加入您的表:
ID
值匹配ColA
,ColB
和ColC
值不是NULL
,并且ColD
,ColE
和ColF
值不是NULL
以下查询将起作用,至少对于您确实向我们展示的示例数据:
SELECT
t1.ID,
t1.ColA,
t1.ColB,
t1.ColC,
t2.ColD,
t2.ColE,
t2.ColF
FROM yourTable t1
LEFT JOIN yourTable t2
ON t1.ID = t2.ID
WHERE
t1.ColA IS NOT NULL AND
t1.ColB IS NOT NULL AND
t1.ColC IS NOT NULL AND
t2.ColD IS NOT NULL AND
t2.ColE IS NOT NULL AND
t2.ColF IS NOT NULL;
答案 1 :(得分:0)
您需要使用MAX
分析函数将所有详细信息填写在空白COLD
,COLE
和COLF
列中,然后需要where clause
从示例数据中过滤出第一行,其中COLA
,COLB
和COLC
均为空。
尝试以下查询:
SELECT
*
FROM
(
SELECT
ID,
COLA,
COLB,
COLC,
MAX(COLD) OVER(
PARTITION BY ID
) AS COLD,
MAX(COLE) OVER(
PARTITION BY ID
) AS COLE,
MAX(COLF) OVER(
PARTITION BY ID
) AS COLF
FROM
YOUR_TABLE
)
WHERE
COLA IS NOT NULL
AND COLB IS NOT NULL
AND COLC IS NOT NULL;
干杯!