Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在Sql中将记录更改为列_Sql Server - Fatal编程技术网

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如果答案对您有帮助,请务必通过左侧的复选标记接受。这将有助于未来的游客,你也可以从中获得声誉。