将行透视到 SQL 中的列而不聚合
Pivot Rows to Column in SQL without Aggregation
我希望将多行旋转成列。但是当我在 Pivot 中使用 Max 或 Min 时,它只返回一行。我想显示所有行。有人可以帮忙吗?
来自:
收件人:
您可以使用条件聚合:
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
. . . ;
我希望将多行旋转成列。但是当我在 Pivot 中使用 Max 或 Min 时,它只返回一行。我想显示所有行。有人可以帮忙吗?
来自:
收件人:
您可以使用条件聚合:
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
. . . ;