sql - 根据条件过滤掉某些行

标签 sql sql-server ssms

我有这个输入表:

+-------------+--------------+-------+
| ProjectName | ProjectOwner | Col2  |
+-------------+--------------+-------+
| A           | Sara         | Sara  |
| B           | Jack         | Maria |
| B           | Jack         | Jack  |
| C           | Laura        | May   |
| C           | Laura        | Laura |
| D           | Paul         | Jack  |
| E           | May          | May   |
| E           | May          | May   |
+-------------+--------------+-------+

我想分别检查每个项目然后排除
  • 如果项目所有者在 col2 中有他的名字并且其他人与他在一起,则删除重复的行 Jack Jack ,

    一种。例如,在项目 B 中,Jack 在 Col2 中有他的名字并且他正在与 Maria 合作,因此删除 Jack Jack
    湾同时删除 Laura Laura在 C 项目中
  • 如果项目所有者只有他自己在项目内工作,则保留它,例如项目 A 和项目 E
  • 如果项目所有者在 col2 中没有他的名字,则排除项目 D
  • 等项目
  • 删除重复项,如 Project E

  • 输出表:
    +-------------+--------------+-------+
    | ProjectName | ProjectOwner | Col2  |
    +-------------+--------------+-------+
    | A           | Sara         | Sara  |
    | B           | Jack         | Maria |
    | C           | Laura        | May   |
    | E           | May          | May   | 
    +-------------+--------------+-------+
    

    我试过这个 here但结果没有显示我的项目 A 和 E。

    最佳答案

    请试试这个代码:

    select distinct  *
    from mytable m
    where (ProjectOwner!=Col2 or not exists(select 1 from mytable m1 where m1.ProjectName=m.ProjectName and  m1.ProjectOwner=m.ProjectOwner and m.Col2!=m1.Col2) )
    and ProjectName in (select ProjectName from mytable where ProjectOwner=Col2 )
    

    Demo

    关于sql - 根据条件过滤掉某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51024071/

    相关文章:

    sql - 转换 SQL Server 空日期/时间字段

    c# - 创建 FileTable 或 FileStream SQL 类型 在 C# 中使用 Stream

    sql - varchar字段的分组字符

    sql - SQL 服务器管理工​​作室中的自动完成

    SQL 管理工作室/SQL : Seeing the GroupBy/Sum aggregate functions

    sql - '' 附近的语法不正确

    MYSQL 错误 #1064 - 如何修复它?

    php - SQL 代码点火器 : Create savepoint and roll-back to the savepoint/Rollback multiple transaction from controller

    c# - 独立于 DBMS 的查询

    c# - 无法将 NULL 值插入自动增量主键列