我在MS SQL中具有以下表结构

AirQuoteID        Name        SalesValue
7                  M          49.50
7                  N          23.10
7                 +45         233.20
7                 +100        233.20
7                 +250        2333.10


我想要一个可以返回的查询

AirQuoteID      M        N        +45        +100    +250
7               49.50    23.10    233.20     233.20   2333.10


什么是最佳解决方案。价值是动态的

最佳答案

您需要查看PIVOT运算符。

;With T As
(
SELECT 7 AirQuoteID,'M' Name,49.50 SalesValue UNION ALL
SELECT 7 AirQuoteID,'N', 23.10 UNION ALL
SELECT 7 AirQuoteID,'+45',233.20 UNION ALL
SELECT 7 AirQuoteID,'+100',233.20 UNION ALL
SELECT 7 AirQuoteID,'+250',2333.10
)
SELECT AirQuoteID, [M], [N], [+45], [+100], [+250]
FROM T
PIVOT
(
MAX(SalesValue)
FOR Name IN ([M], [N], [+45], [+100], [+250])
) AS pvt;


但是,如果列的值不固定,则需要使用dynamic SQL

08-06 18:36