SQLServer 行转列

    xiaoxiao2021-11-03  42

    参考例子

    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

    转载请注明原文地址: https://ju.6miu.com/read-677961.html

    最新回复(0)