我的数据看起来像这样
ID Source Destination FLAG
1 A B Y
2 C D N
结果数据基于以下逻辑
如果FLAG =' Y'然后结果查询将有两行,其中源和目标列交换,否则只有一行
ID Source Destination FLAG
1 A B Y
1 B A Y
2 C D N
答案 0 :(得分:3)
我认为你今年秋天不需要case
,只需更改标志为'Y'
的来源和目的地,并将其添加到{{1}过滤的原始表格中}}
id
答案 1 :(得分:1)
混杂列应该是非常容易的任务,它应该工作。但是,如果您仍然坚持使用案例,那么:
SQL> WITH data
2 AS (SELECT 1 id,
3 'A' source,
4 'B' destination,
5 'Y' flag
6 FROM dual
7 UNION ALL
8 SELECT 2 id,
9 'C' source,
10 'D' destination,
11 'N' FLAG
12 FROM dual)
13 SELECT *
14 FROM (SELECT id,
15 source,
16 destination,
17 flag
18 FROM data
19 UNION ALL
20 SELECT id,
21 CASE
22 WHEN flag = 'Y' THEN destination
23 END AS "source",
24 CASE
25 WHEN flag = 'Y' THEN source
26 END AS "destination",
27 flag
28 FROM data)
29 WHERE source IS NOT NULL
30 AND destination IS NOT NULL
31 ORDER BY id
32
SQL> /
结果:
ID S D F
---------- - - -
1 A B Y
1 B A Y
2 C D N