我在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;
但是,如果列的值不固定,则需要使用动态SQL。