Sql server 在Sql中将记录更改为列
我有下面这样的桌子Sql server 在Sql中将记录更改为列,sql-server,Sql Server,我有下面这样的桌子 CustomFieldValueId CustomFieldId ProjectId CustomFieldName CustomFieldValue 35 69 1 User Name kaliya 36 72 1 City Bangalore 37
CustomFieldValueId CustomFieldId ProjectId CustomFieldName CustomFieldValue
35 69 1 User Name kaliya
36 72 1 City Bangalore
37 74 1 Email mm@gmail.com
38 69 1 User Name mvkperumal
39 72 1 City Chennai
40 74 1 Email mvkperumal@gmail.com
41 69 1 User Name Yohesh
42 72 1 City Delhi
43 74 1 Email
User Name City Email
kaliya Bangalore mm@gmail.com
mvkperumal Chennai mverumal@gmail.com
Yohesh Delhi
我需要如下输出
CustomFieldValueId CustomFieldId ProjectId CustomFieldName CustomFieldValue
35 69 1 User Name kaliya
36 72 1 City Bangalore
37 74 1 Email mm@gmail.com
38 69 1 User Name mvkperumal
39 72 1 City Chennai
40 74 1 Email mvkperumal@gmail.com
41 69 1 User Name Yohesh
42 72 1 City Delhi
43 74 1 Email
User Name City Email
kaliya Bangalore mm@gmail.com
mvkperumal Chennai mverumal@gmail.com
Yohesh Delhi
我基于CustomFieldValueId获取值并对ProjectId进行分组
因此,请在这方面提供帮助。您可以通过
透视来实现这一点,但您需要有一些方法将每个用户名
与电子邮件
等关联起来。如果您能弄清楚这一点,那么您可以使用以下方法:
select [User Name], [City], [email]
from
(
select customfieldname, customfieldvalue,
row_number() over(partition by ProjectId, CustomFieldId
order by CustomFieldValueId) rn
from yourtable
) src
pivot
(
max(customfieldvalue)
for customfieldname in ([User Name], [City], [email])
) piv
看
因为您没有提供关联每个值的方法,所以我对每个记录应用了一个row\u number()
让我们看看你是如何连接这些值的?为什么不能是kaliya,Chennai',
我已经试过了,我无法找到答案,我想我可以看到您正在尝试做什么,但我认为您的表模式不完整。没有用户id/记录id允许我们将kaliya链接到班加罗尔。如果有,则可以使用表别名和多个联接来实现这一点。这仍然不是一件聪明的事情。@kmkperumal您需要添加一个recordId列来将所有相关行链接在一起。设置好后,您只需做一个pivot转换为您要求的格式。非常感谢您的帮助。@kmkperumal如果答案对您有帮助,请务必通过左侧的复选标记接受。这将有助于未来的游客,你也可以从中获得声誉。