我一直在寻找旋转柱,并感谢任何帮助。我看到很多关于在枢轴上总结一行的例子,但我有一个不同的场景。我有一个JSON字段,它被解析,输出被放置在视图中。
ID Name StringValue
1 type user
1 name aeolos smith
1 access admin
2 type user
2 name ramuh smith
2 access author
我想以某种方式将其转移到最终结果如下。
type name access
user aeolos smith admin
user ramuh smith author
对于标识符为ID的任何条目,等等。
这可能吗?
答案 0 :(得分:1)
您没有指定正在使用的数据库,但是您的数据库支持窗口函数,如row_number()
,那么您可以使用带有CASE表达式的聚合函数以及行号来获得最终结果:
select
max(case when name = 'type' then stringvalue end) type,
max(case when name = 'name' then stringvalue end) name,
max(case when name = 'access' then stringvalue end) access
from
(
select id, name, stringvalue,
row_number() over(partition by name order by id) seq
from yourtable
) d
group by seq;
如果您的数据库支持PIVOT功能,那么您仍然会使用row_number()
窗口函数和pivot来获得最终结果:
select type, name, access
from
(
select name nm, stringvalue,
row_number() over(partition by name order by id) seq
from yourtable
) d
pivot
(
max(stringvalue)
for nm in (type, name, access)
) piv;