我有一个表格,我想要转动一些行。这里有很多这样的问题,但我仍然在苦苦挣扎。
这是我开始的表格。
这是我想去的地方
答案 0 :(得分:4)
根据您的示例数据,您可以使用带有CASE表达式的聚合函数轻松获得结果:
select userlicenseid,
startdate,
max(case when name = 'Other' then value end) Other,
max(case when name = 'Pathways' then value end) Pathways,
max(case when name = 'Execution' then value end) Execution,
max(case when name = 'Focus' then value end) Focus,
max(case when name = 'Profit' then value end) Profit
from yourtable
group by userlicenseid, startdate;
见SQL Fiddle with Demo。由于您要将字符串值转换为列,因此您需要使用min()
或max()
聚合。
您也可以使用PIVOT函数来获得结果:
select userlicenseid, startdate,
Other, Pathways, Execution, Focus, Profit
from
(
select userlicenseid, startdate,
name, value
from yourtable
) d
pivot
(
max(value)
for name in (Other, Pathways, Execution, Focus, Profit)
) piv;