如何制作以下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列(我想成为标题)中的值在所有行中都是相同的(但根据初始查询的不同而不同)。
我认为我想要的方法是通过使用PIVOT,但真的很难获得理想的结果。
由于
答案 0 :(得分:1)
假设你的源数据实际上是这样的:
Static Pivot
Select *
From YourTable
Pivot (max(attributeValue) For [attributeName] in ([Chain Size],[Length],[Hook Type],[Shortening Grab]) ) p
<强>返回强>
动态方法
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);
<强>返回强>
注意,如果没有列序列的项,您将看到它们是按字母顺序排列的。