我需要什么查询来改变结果
来自
键值 | 属性1 | 价值1 | 属性2 | 价值2 | 属性3 | 价值3 | 属性4 | 价值4 |
---|---|---|---|---|---|---|---|---|
12345 | abc | 54321 | 定义 | 是的 | 吉 | 没有 | jkl | 67890 |
**致**
键值 | 属性 | 价值 |
---|---|---|
12345 | 属性1 | 值1 |
12345 | 属性2 | 值2 |
12345 | 属性3 | 值3 |
12345 | 属性4 | 值4 |
这是我对第一个表的查询
选择键值、属性1、值1、属性2、值2、属性3、值3、属性4、值4、属性5、值5 来自表A
我使用了 UNION ALL,但它显着减慢了进程,所以我不想使用 UNION ALL。
其他方式(ORACLE):
select a.key_value
, (
case
when b.rno = 1 then a.Attribute1
when b.rno = 2 then a.Attribute2
when b.rno = 3 then a.Attribute3
when b.rno = 4 then a.Attribute4
end
) as Attribute
, (
case
when b.rno = 1 then a.Value1
when b.rno = 2 then a.Value2
when b.rno = 3 then a.Value3
when b.rno = 4 then a.Value4
end
) as Value
from (
select '12345' as key_value, 'abc' as Attribute1, '54321' as Value1, 'def' as Attribute2, 'Yes' as Value2, 'ghi' as Attribute3, 'No' as Value3, 'jkl' as Attribute4, '67890' as Value4 from dual
) a
cross join (
select 1 as rno from dual
union all
select 2 as rno from dual
union all
select 3 as rno from dual
union all
select 4 as rno from dual
) b
;