SQL:删除其中 2 列与另一行中的值匹配的行

问题描述

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

该表名为planned_rotn_data,需要匹配的行分别为empl_nbr和rotn_beg_dt

简化示例如下:

<ul class="connected">
  <li class="name">Alex</li>
  <li class="name">Laura</li>
</ul>

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

解决方法

使用 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
                   );