我的原始查询是
select element1_name, element1_value, element2_name, element2_value
from reports r
我想将element_name,element_value行转换为列,以便编写此查询
select *
from (select *
from (select element1_name,
element1_value,
element2_name,
element2_value
from reports r)
pivot(max(element1_value) as one
for element1_name in('C' as C, 'Si' as SI, 'P' as P)))
pivot(max(element2_value) as tow
for element2_name in('C' as C, 'Si' as SI, 'P' as P))
有一种方法可以将两个数据透视表一起编写而无需两个子查询
Select * (...) pivot element1,pivot element2
问题:如何优化此查询?
答案 0 :(得分:2)
您可以在下面的查询中尝试-
select *
from (select element1_name,
element1_value,
element2_name,
element2_value
from reports) AS R
pivot(max(element1_value) for element1_name in('C' as C, 'Si' as SI, 'P' as P)) as PV1
pivot(max(element2_value) for element2_name in('C' as C, 'Si' as SI, 'P' as P)) as PV2;