在没有聚合的 SQL 中将行透视到列
Posted
技术标签:
【中文标题】在没有聚合的 SQL 中将行透视到列【英文标题】:Pivot Rows to Column in SQL without Aggregation 【发布时间】:2021-07-26 17:55:44 【问题描述】:我希望将多行转换为列。但是当我在 Pivot 中使用 Max 或 Min 时,它只返回一行。我想显示所有行。有人可以帮忙吗?
来自:
到:
【问题讨论】:
【参考方案1】:您可以使用条件聚合:
select object_key,
max(case when name = 'OBJECT_NAME' then value end) as object_name,
max(case when name = 'Start Time' then value end) as start_time,
max(case when name = 'End Time' then value end) as end_time,
max(case when name = 'row_count' then value end) as row_count,
max(case when name = 'Execution Time' then value end) as execution_time
from t
group by object_key;
我不确定您为什么在问题中指定“无聚合”。
如果你真的不喜欢聚合使用可以使用join
s:
select ton.object_key, ton.value as object_name,
ts.value as start_time, te3.value as end_time,
. .
from t ton on
t ts
on ton.object_key = ts.object_key join
t te
on ton.object_key = t3.ojbect_key. join
. . . ;
【讨论】:
非常感谢戈登!我只是在努力思考枢轴,但没有看到可用选项的情况:) 这正如我预期的那样工作。再次感谢以上是关于在没有聚合的 SQL 中将行透视到列的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server 2008 中将行切换到列,反之亦然