gpt4 book ai didi

sql - 展平 SQL 行 'properties' 结果

转载 作者:行者123 更新时间:2023-12-03 03:29:34 26 4
gpt4 key购买 nike

SQL Server 2005

我有以下结果集:

ID  name    prop    value
--------------------------
1 one Prop1 va1_1_1
1 one Prop2 val_1_2
2 two Prop1 val_2_1
2 two Prop2 val_2_2
3 three Prop2 val_3_2
4 four Prop1 val_4_1
4 four Prop2 val_4_2

如何将其压平以获得输出

ID  name    Prop1       Prop2
---------------------------------
1 one val_1_1 val_1_2
2 two val_2_1 val_2_2
3 three val_3_2 NULL
4 four val_4_1 val_4_2

注意:属性的数量(Prop1Prop2)是任意的,并且可以有很多。

最佳答案

参见MSDN: Using PIVOT and UNPIVOT .

它有一个很好的例子来说明您正在尝试做什么。

这会给你想要的结果。

Select  *
From (
Select ID,name,prop,value
from YourTable
) P
PIVOT ( max(value) For Prop in (Prop1,Prop2) ) as pvt
Order By ID

请注意,您需要支持任意数量的 prop 值。在这种情况下,一种解决方案可能是动态构建此脚本并执行它。

编辑:为了使其完整,这里是适用于任意数量的 prop 值的 SQL -

Declare @Value as NVarChar(Max)
Set @Value = 'Select *
From (
Select ID,name,prop,value
from YourTable
) P
PIVOT ( max(value) For Prop in ('

Select @Value = @Value + Prop + ','
from ( Select Distinct Prop
From YourTable) YT

Set @Value = Left(@Value, Len(@Value)-1)

Set @Value = @Value + ') ) as pvt Order By ID'
Exec(@Value)

关于sql - 展平 SQL 行 'properties' 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6389678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com