行值作为列标题

Row values as column headings

我怎样才能得到以下 sql 结果:

在这样的结果集中呈现

| ID  | Chain Size      | Length  | Hook Type  | Shortening Grab |
|-----|-----------------|---------|------------|-----------------|
| 163 | 7mm (1.5 tonne) | 1 metre | C Hook     |  Yes            |
| 226 | 7mm (1.5 tonne) | 1 metre | C Hook     |  No             |
| 247 | 7mm (1.5 tonne) | 1 metre | Latch Hook |  No             |

我知道第 2、4、6 和 8 列(我想 headers)中的值在所有行中都是相同的(但因初始查询而异)。

我相信我想要的方法是通过使用 PIVOT 但真的很难获得想要的结果。

谢谢

假设您的源数据实际如下所示:

静态枢轴

Select *
From  YourTable
Pivot (max(attributeValue) For [attributeName] in ([Chain Size],[Length],[Hook Type],[Shortening Grab]) ) p

Returns

动态方法

Declare @SQL varchar(max) = Stuff((Select Distinct ',' + QuoteName([attributeName]) From Yourtable  Order by 1 For XML Path('')),1,1,'') 
Select  @SQL = '
Select *
From YourTable
Pivot (max(attributeValue) For [attributeName] in (' + @SQL + ') ) p'
Exec(@SQL);

Returns

注意,没有列序列的项目,您会看到它们是按字母顺序排列的。