SQL语句合并,同一列不同条件设置不同的别名

img


SQL语句合并,同一列不同条件设置不同的别名。最开始,我有考虑用union all,但是结构与我预期不一样,我想让它显示多列,列名则是我起的别名。

select 
    decode(prop_key, 'durationTime', prop_prod_value, NULL ) as durationTime,
    decode(prop_key, 'databaseAddr', prop_prod_value, NULL ) as databaseAddr,
    decode(prop_key, 'port', prop_prod_value, NULL ) as port,
    decode(prop_key, 'orderTriggerSwitch', prop_prod_value, NULL ) as orderTriggerSwitch
from t_system_prop ;

显示多列用关联查询。
或者先合并数据,然后行转列。

你这不就是在同一个表中的数据么,直接行转列即可

你只需要自己弄好排序规则,对应关系什么的就可以,也可以自行添加其他字段,不用排序

select * from (
    select prop_key,prop_prod_value,ROW_NUMBER() over(partition by prop_key order by prop_prod_value) as rowid from t_system_prop
) a
pivot(max(prop_prod_value) for prop_key in ('durationTime','databaseAddr','port','orderTriggerSwitch')) p


给你个mssql的相关示例


select * from (
    select number,type,ROW_NUMBER() over(partition by type order by number,name) as rid from master..spt_values where type<>'p'
) a
pivot(max(number) for [type] in (A,I,D,D2)) p