行值作为列标题
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
注意,没有列序列的项目,您会看到它们是按字母顺序排列的。
我怎样才能得到以下 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
注意,没有列序列的项目,您会看到它们是按字母顺序排列的。