Sco*_*ott 7 t-sql sql-server pivot stored-procedures
我遇到了一个问题我见过其他类似问题,但这些问题的答案似乎并不适用于我的情况.这是我的第一个问题,请原谅我提前解决任何格式问题,并感谢您提供的任何见解.
我#TempTBData看起来像这样:
InvoiceProductID ContactID ContactName ChargeDescription Amount
191 1832 Gloria Cheung Cruise Fare 500.00
191 1886 John Novosad Cruise Fare 500.00
191 2011 Christopher Yong Cruise Fare 100.00
Run Code Online (Sandbox Code Playgroud)
我的透视代码如下所示:
SELECT DISTINCT<br>
[InvoiceProductID]<br>
,[ChargeDescription]<br>
,[Christopher Yong],[Gloria Cheung],[John Novosad]<br>
FROM #TempTBData<br>
PIVOT(MAX([Amount])<br>
FOR [ContactName] IN ([Christopher Yong],[Gloria Cheung],[John Novosad])) AS PVTTable
Run Code Online (Sandbox Code Playgroud)
..我的PIVOT结果如下:
InvoiceProductID ChargeDescription Christopher Yong Gloria Cheung John Novosad
191 Cruise Fare NULL NULL 500.00
191 Cruise Fare NULL 500.00 NULL
191 Cruise Fare 100.00 NULL NULL
Run Code Online (Sandbox Code Playgroud)
..我希望结果如下:
InvoiceProductID ChargeDescription Christopher Yong Gloria Cheung John Novosad
191 Cruise Fare 100.00 500.00 500.00
Run Code Online (Sandbox Code Playgroud)
请让我知道我做错了什么.
问题是由ContactID您的表格字段引起的.使用派生表而不是显式选择仅进行透视操作所需的字段:
SELECT [InvoiceProductID], [ChargeDescription],
[Christopher Yong],[Gloria Cheung],[John Novosad]
FROM (
SELECT [InvoiceProductID], [ContactName], [ChargeDescription], [Amount]
FROM #TempTBData ) AS src
PIVOT(MAX([Amount])
FOR [ContactName] IN ([Christopher Yong],[Gloria Cheung],[John Novosad])) AS PVTTable
Run Code Online (Sandbox Code Playgroud)
我省略了,DISTINCT因为在这种情况下似乎是多余的.
| 归档时间: |
|
| 查看次数: |
3233 次 |
| 最近记录: |