with t as (select 1 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f from dual union all select 2 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f from dual) select decode(flag, 1, a, b), decode(flag, 1, c, d), decode(flag, 1, e, f) from t;
with t as (select 1 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f from dual union all select 2 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f from dual) select decode(flag, 1, a, b), decode(flag, 1, c, d), decode(flag, 1, e, f) from t; 这么搞太复杂了,还是老实写两条查询吧
WITH T AS (SELECT 1 FLAG, 1 A, 2 B, 3 C, 4 D, 5 E, 6 F FROM DUAL UNION ALL SELECT 2 FLAG, 1 A, 2 B, 3 C, 4 D, 5 E, 6 F FROM DUAL) SELECT A, B, C, NULL D, NULL E, NULL F FROM T WHERE FLAG = 1 UNION SELECT NULL A, NULL B, NULL C, D, E, F FROM T WHERE FLAG <> 1;
with t as (select 1 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f from dual union all select 2 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f from dual) select decode(flag, 1, a, b), decode(flag, 1, c, d), decode(flag, 1, e, f) from t; 这么搞太复杂了,还是老实写两条查询吧with t as (select 1 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f from dual union all select 2 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f from dual) 这部分时测试数据,你不用管, 这个才是你要用的SQL: select decode(flag, 1, a, b), decode(flag, 1, c, d), decode(flag, 1, e, f) from t;
(select 1 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
from dual
union all
select 2 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
from dual)
select decode(flag, 1, a, b), decode(flag, 1, c, d), decode(flag, 1, e, f)
from t;
(select 1 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
from dual
union all
select 2 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
from dual)
select decode(flag, 1, a, b), decode(flag, 1, c, d), decode(flag, 1, e, f)
from t;
这么搞太复杂了,还是老实写两条查询吧
WITH T AS
(SELECT 1 FLAG, 1 A, 2 B, 3 C, 4 D, 5 E, 6 F
FROM DUAL
UNION ALL
SELECT 2 FLAG, 1 A, 2 B, 3 C, 4 D, 5 E, 6 F FROM DUAL)
SELECT A, B, C, NULL D, NULL E, NULL F
FROM T
WHERE FLAG = 1
UNION
SELECT NULL A, NULL B, NULL C, D, E, F FROM T WHERE FLAG <> 1;
(select 1 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
from dual
union all
select 2 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
from dual)
select decode(flag, 1, a, b), decode(flag, 1, c, d), decode(flag, 1, e, f)
from t;
这么搞太复杂了,还是老实写两条查询吧with t as
(select 1 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
from dual
union all
select 2 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
from dual)
这部分时测试数据,你不用管,
这个才是你要用的SQL:
select decode(flag, 1, a, b), decode(flag, 1, c, d), decode(flag, 1, e, f)
from t;
楼主,union all还是真真极好的。