【问题标题】:SAS EG (SQL) deleting rows where max value in one column using double group bySAS EG(SQL)使用双组删除一列中最大值的行
【发布时间】:2021-06-10 13:47:49
【问题描述】:

我需要删除最大值为duty_per_id 的所有行,其中rotn_prng_nbrempl_nbr 相同(彼此不同,但是这两个行的最大位置保持不变)。从下表中它应该删除第 3,7 和 9 行。

rotn_prng_nbr empl_nbr duty_perd_id
B93 12 1
B93 12 2
B93 12 3
B21 12 1
B21 12 2
B21 12 3
B21 12 4
B21 18 1
B21 18 2

使用 SAS EG。

【问题讨论】:

    标签: sql group-by sas


    【解决方案1】:

    一种方法使用相关子查询:

    select t.*
    from t
    where t.duty_perd_id < (select max(t2.duty_perd_id)
                            from t t2
                            where t2.rotn_prng_nbr = t.rotn_prng_nbr and
                                  t2.empl_nbr = t.empl_nbr
                           );
    

    【讨论】:

    • 抱歉这里回复晚了,但是这段代码中的 t2 到底是什么?
    • @MichaelAncel 。 . . t2 是您正在使用的表的表别名。它在子查询中定义以启用相关子句。
    • 谢谢!我让它工作了,但是这个解决方案运行起来仍然很慢。如果您有兴趣,我会打开一个新帖子,但无论哪种方式,我都感谢您的帮助!
    猜你喜欢
    • 2021-08-30
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    相关资源
    最近更新 更多