SQLServer 行转列

参考例子

http://sqlfiddle.com/#!6/a63a6/457






  SELECT LogicalStationID,[气体浓度_DLastValue],[传感器状态_DLastValue],
  [水位状态_DLastValue],[电池状态_DLastValue],
  case when [气体浓度_DLastTime]>=[传感器状态_DLastTime] and [气体浓度_DLastTime]>=[水位状态_DLastTime] 
  and [气体浓度_DLastTime]>=[电池状态_DLastTime] Then  convert(datetime,[气体浓度_DLastTime])
   when [传感器状态_DLastTime]>=[气体浓度_DLastTime] and [传感器状态_DLastTime]>=[水位状态_DLastTime] 
  and [传感器状态_DLastTime]>=[电池状态_DLastTime] Then  convert(datetime,[传感器状态_DLastTime])
   when [水位状态_DLastTime]>=[气体浓度_DLastTime] and [水位状态_DLastTime]>=[传感器状态_DLastTime] 
  and  [水位状态_DLastTime]>=[气体浓度_DLastTime] Then  convert(datetime,[水位状态_DLastTime])
    when [电池状态_DLastTime]>=[传感器状态_DLastTime] and [电池状态_DLastTime]>=[气体浓度_DLastTime] 
  and [电池状态_DLastTime]>=[水位状态_DLastTime]  Then  convert(datetime,[电池状态_DLastTime]) end as [DLastTime]
   FROM
(
SELECT LogicalStationID, col, val FROM(
 SELECT *, Name+'_DLastValue' as Col, DLastValue as Val FROM [zhouweiTest].[dbo].[SensorReal]
 UNION
 SELECT *, Name+'_DLastTime' as Col,CONVERT(float, DLastTime) as Val  FROM [zhouweiTest].[dbo].[SensorReal]
) t
) tt
PIVOT ( max(Val) for Col in ([气体浓度_DLastValue],[气体浓度_DLastTime],[传感器状态_DLastValue],[传感器状态_DLastTime],
[水位状态_DLastValue],[水位状态_DLastTime],[电池状态_DLastValue],[电池状态_DLastTime]) ) AS pvt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值