根据最近的日期值旋转列

时间:2015-02-04 18:31:05

标签: sql sql-server

不确定我是否正确解释了标题,但这里是schrio。我有这张桌子 enter image description here

我想将结果显示为:

enter image description here

对于相应的TS值,选择CS和SCS值,其中CS或SCS的日期值最接近或小于TS的值日期值。如果未找到,则这些值(CS,SCS)应为空。 感谢。

1 个答案:

答案 0 :(得分:0)

一种方法使用相关子查询:

select t.id, t.date, t.name,
       (select top 1 startvalue
        from table t2
        where t2.date <= t.date and
              t2.name = 'cs'
        order by t2.date desc
       ) as cs,
       (select top 1 startvalue
        from table t2
        where t2.date <= t.date and
              t2.name = 'scs'
        order by t2.date desc
       ) as scs
from table t
where t.name = 'TS';

您可以使用outer apply执行非常类似的操作。