【问题标题】:SQL: delete rows where 2 columns match the values in another rowSQL:删除两列与另一行中的值匹配的行
【发布时间】:2021-05-26 17:56:42
【问题描述】:

我在 proc sql 下在 SAS EG 中工作,并试图从我的表中删除两个特定列重复的所有行。行中的其余值会有所不同,所以我不只是删除重复的行。

表名为planned_rotn_data,需要匹配的行是empl_nbr和rotn_beg_dt

简化示例如下:

| Empl_Nbr| rotn_beg_dt  | col3     | col4     |
| 333     | 21may2021    | 6        | 4        |
| 333     | 24jun2021    | 7        | 6        |
| 333     | 21may2021    | 3        | 12       |
| 222     | 9apr2020     | 1        | 34       |

我只想删除第 1 行或第 3 行中的一个(在这种情况下没关系,但可以说它基于 col3 中的值)。

【问题讨论】:

    标签: sql sas sql-delete


    【解决方案1】:

    使用proc sql -- 并假设另一列是唯一的 -- 您可以使用:

    proc sql;
        delete from t
        where t.col3 > (select min(t2.col3)
                        from t t2
                        where t2.Empl_Nbr = t.Empl_Nbr and t2.rotn_beg_dt = t.rotn_beg_dt
                       );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-11
      • 2011-03-23
      • 2015-06-27
      相关资源
      最近更新 更多