-3

我有如下表

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 进行分组,所以请对此提供帮助..

4

1 回答 1

1

您可以使用 a 来执行此操作,PIVOT但您需要有某种方式将每个User NameEmail等相关联。如果您能弄清楚,那么您可以使用以下内容:

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

请参阅带有演示的 SQL Fiddle

由于您没有提供关联每个值的方法,因此我将 arow_number()应用于每条记录。

于 2012-11-02T18:25:36.260 回答