我在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','+250',2333.10
- )
- SELECT AirQuoteID,[M],[N],[+45],[+100],[+250]
- FROM T
- PIVOT
- (
- MAX(SalesValue)
- FOR Name IN ([M],[+250])
- ) AS pvt;
但是,如果列的值未修复,则需要使用dynamic SQL.