【问题标题】:SQL filter group based on occurrence of attribute基于属性出现的 SQL 过滤器组
【发布时间】:2018-10-11 07:11:36
【问题描述】:

在 (T-)SQL 中是否可以通过特定值的出现来过滤记录组,例如 this question about a Python dataframe

例如,在下表中,我希望将包含 16 的完整组作为输出作为Value

ID Group Value
1    1   10
2    1   12
3    1   16
4    2   10
5    2   14
6    2   18
7    3   12
8    3   16
9    3   18

我想要的结果是

ID Group Value
1    1   10
2    1   12
3    1   16
7    3   12
8    3   16
9    3   18

根据文档和我得到的错误,GROUP BYPARTITION BYHAVING 仅在对总值求和时有效。

【问题讨论】:

    标签: sql filtering


    【解决方案1】:

    你可以使用EXISTS:

    SELECT *
    FROM tab t1
    WHERE EXISTS (SELECT 1
                  FROM tab t2
                  WHERE t1.[group] = t2.[group]
                    AND t2.[Value] = 16)
    

    【讨论】:

    • 感谢您的快速答复!它运作良好!我用(SELECT * FROM tab t2而不是(SELECT 1 FROM tab t2试了一下
    【解决方案2】:

    试试这个:

    SELECT * FROM tableName
    WHERE group in 
    (SELECT distinct group from tableName where value = 16)
    

    内部查询将列出所有带有value = 16 的组。外部查询将选择仅包含这些组的行。

    【讨论】:

      猜你喜欢
      • 2019-10-14
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 2021-03-13
      • 2018-08-17
      • 1970-01-01
      • 2018-08-23
      相关资源
      最近更新 更多