【问题标题】:Select data from previous rows with condition从具有条件的前行中选择数据
【发布时间】:2017-09-25 16:00:36
【问题描述】:

我的数据是这样的

    col1; col2; col3; col4; sort; desc; levels
    1     1     1     1     10    ab     null
    1     1     1     2     20    c      1
    1     1     1     3     30    d      null
    1     1     1     4     40    e      null
    1     1     1     5     50    fg     1
    1     1     1     6     60    hij    1
    1     1     1     7     70    k      1

所需的输出如下所示

    col1; col2; col3; col4; desc; addDesc
    1     1     1      1     ab   null
    1     1     1      2     c    ab
    1     1     1      3     d    null
    1     1     1      4     e    null
    1     1     1      5     fg   e
    1     1     1      6     hij  e
    1     1     1      7     k    e

逻辑是当列 LEVELS 不为空时,从先前的 DESC 中获取值,其中 LEVELS 为空。 我希望你们明白这一点!

提前谢谢大家!

【问题讨论】:

    标签: sql-server tsql


    【解决方案1】:

    你可以使用OUTER APPLY:

    SELECT  t1.col1,
            t1.col2,
            t1.col3,
            t1.col4,
            t1.[desc],
            CASE
                WHEN t1.levels IS NOT NULL THEN t2.[desc]
            END [addDesc]
    FROM dbo.YourTable t1
    OUTER APPLY (SELECT TOP 1 [desc]
                 FROM dbo.YourTable
                 WHERE levels IS NULL
                 AND sort < t1.sort
                 ORDER BY sort DESC) t2;
    

    【讨论】:

    • 非常感谢!像魅力一样工作:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 2020-06-24
    相关资源
    最近更新 更多