【发布时间】:2020-10-15 13:49:00
【问题描述】:
我有一个 oracle 数据库表,其中包含一组重复 5 次的列。就像在下面的示例中,列(COL1_A 到 COL1_E)将在同一个表中存在 5 次,但列的名称除外,每组列中的数据类型将相同,但在一组(COL1_A 到 COL1_E)中确实如此没有相同的数据类型。
Cli_Id,Country,Name,COL1_A,COL1_B,COL1_C,COL1_D,COL1_E,COL2_A,COL2_B,COL2_C,COL2_D,COL2_E,COL3_A COL3_B,..
1 Test1 Lo1 1 2 3 4 5 1 2 3 4 5
2 Test2 Lo2 5 6 7 8 9 5 3 3 4 5
3 Test3 Lo3 10 20 30 40 50 5 3 3 4 5
4 Test4 Lo4 11 22 32 42 52 53 3 3 4 5
5 Test5 Lo5 11 22 32 42 52 11 22 32 42 52
我需要编写一个查询来检索在列集之间包含重复项的所有行。
预期的结果
Cli_Id,Country,Name,COL1_A,COL1_B,COL1_C,COL1_D,COL1_E,COL2_A,COL2_B,COL2_C,COL2_D,COL2_E,COL3_A COL3_B,..
1 Test1 Lo1 1 2 3 4 5 1 2 3 4 5
5 Test5 Lo5 11 22 32 42 52 11 22 32 42 52
我写了一个有几个联合但可能会影响性能,因为我们打算将集合增加到 8。因此寻找一种更简单的方法来编写这个查询。
您能否就更简单的查询提出建议,记住它应该是高效的,并且运行时间不会太长。
Select distinct CLi_id,Country,Name
from Table1
Where COL1_A = COL2_A
AND COL1_B = COL2_B
AND COL1_C = COL2_C
AND COL1_D = COL2_D
AND COL1_E = COL2_E
UNION
Select distinct CLi_id,Country,Name
from Table1
Where COL1_A = COL3_A
AND COL1_B = COL3_B
AND COL1_C = COL3_C
AND COL1_D = COL3_D
AND COL1_E = COL3_E
UNION
Select distinct CLi_id,Country,Name
from Table1
Where COL1_A = COL4_A
AND COL1_B = COL4_B
AND COL1_C = COL4_C
AND COL1_D = COL4_D
AND COL1_E = COL4_E
UNION
Select distinct CLi_id,Country,Name
from Table1
Where COL1_A = COL5_A
AND COL1_B = COL5_B
AND COL1_C = COL5_C
AND COL1_D = COL5_D
AND COL1_E = COL5_E
UNION
Select distinct CLi_id,Country,Name
from Table1
Where COL2_A = COL3_A
AND COL2_B = COL3_B
AND COL2_C = COL3_C
AND COL2_D = COL3_D
AND COL2_E = COL3_E
UNION
Select distinct CLi_id,Country,Name
from Table1
Where COL2_A = COL4_A
AND COL2_B = COL4_B
AND COL2_C = COL4_C
AND COL2_D = COL4_D
AND COL2_E = COL4_E
UNION
Select distinct CLi_id,Country,Name
from Table1
Where COL2_A = COL5_A
AND COL2_B = COL5_B
AND COL2_C = COL5_C
AND COL2_D = COL5_D
AND COL2_E = COL5_E
UNION
Select distinct CLi_id,Country,Name
from Table1
Where COL3_A = COL4_A
AND COL3_B = COL4_B
AND COL3_C = COL4_C
AND COL3_D = COL4_D
AND COL3_E = COL4_E
UNION
Select distinct CLi_id,Country,Name
from Table1
Where COL3_A = COL5_A
AND COL3_B = COL5_B
AND COL3_C = COL5_C
AND COL3_D = COL5_D
AND COL3_E = COL5_E
UNION
Select distinct CLi_id,Country,Name
from Table1
Where COL4_A = COL5_A
AND COL4_B = COL5_B
AND COL4_C = COL5_C
AND COL4_D = COL5_D
AND COL4_E = COL5_E
【问题讨论】:
标签: sql oracle duplicates oracle-sqldeveloper