参考例子
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