【问题标题】:Pivot Rows to Column in SQL without Aggregation在没有聚合的 SQL 中将行透视到列
【发布时间】:2021-07-26 17:55:44
【问题描述】:

我希望将多行转换为列。但是当我在 Pivot 中使用 Max 或 Min 时,它只返回一行。我想显示所有行。有人可以帮忙吗?

来自:

到:

【问题讨论】:

    标签: sql sql-server pivot


    【解决方案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;
    

    我不确定您为什么在问题中指定“无聚合”。

    如果你真的不喜欢聚合使用可以使用joins:

    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
         . . . ;
    

    【讨论】:

    • 非常感谢戈登!我只是在努力思考枢轴,但没有看到可用选项的情况:) 这正如我预期的那样工作。再次感谢
    猜你喜欢
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2013-01-29
    • 2022-12-03
    相关资源
    最近更新 更多