【问题标题】:Sql return group of records till bit is true for all recordsSql 返回记录组,直到所有记录的位为真
【发布时间】:2017-01-12 05:41:32
【问题描述】:

我有一组随时间更新的记录,我希望它们返回,直到所有记录都有一个列,位列为真。

架构

| ID | BatchID | Value | SampleCompleted |
|  1 |  4444   | 3     |       1         |
|  2 |  4444   | 5     |       1         |
|  3 |  4444   | 20    |       1         |
|  4 |  4444   | 50    |       1         |
|  5 |  4444   | NULL  |     NULL        |

所以在上面的示例中,我想返回所有返回的记录,直到记录 5 更新为 SampleCompleted 位为 1。分组的所有记录都将具有相同的批次 ID。我知道这可能很简单,但我很难弄清楚其中的逻辑。

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    这是一种方法:

    SELECT * FROM MyTable
    WHERE BatchID IN
    (
        SELECT BatchID FROM MyTable
        WHERE SampleCompleted IS NULL
    )
    

    【讨论】:

    • 我认为您的意思是 BatchID 而不是 ID。
    • 谢谢你,我脑子里放了个屁。我很感激!
    • 或者只是SELECT * FROM MyTable WHERE SampleCompleted IS NULL?或者 rahter WHERE SampleCompleted=1 但是,真的需要子选择吗?
    • 需要子选择才能返回批次的整个记录​​集。当任何或所有批次记录具有 NULL 值时,OP 希望查看整个批次。
    • 也许我遗漏了什么,但WHERE BatchID IN(...) 应该与您将WHERE 直接放在SELECT 下一样
    猜你喜欢
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 2023-03-22
    • 2021-12-04
    • 2019-12-27
    相关资源
    最近更新 更多