微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何选择一个字段不同的单行? SQL服务器

如何解决如何选择一个字段不同的单行? SQL服务器

我有一个如下表:

const data = incDoc.data();
value = data[date_doc_to_update];

由于Ben由于拥有双专业而拥有来自同一所大学的两条记录(您可以看到同一所学校,毕业年份和学位),所以我只想提取其中一条记录,而不是两条记录,不管我选择哪一个专业,都必须是其中一个而不是两个记录。 所以理想情况下,我希望它像下面这样:

ID            NAME          SCHOOL          GRADUATIONYEAR           DEGREE                MAJOR
--------------------------------------------------------------------------------------------------
100           Ben         University1          2015             Bachelor of Arts           Major1
100           Ben         University1          2015             Bachelor of Arts           Major2
100           Ben         University2          2017             Master of Science          Major3

我尝试执行以下删除操作,但这最终会删除所有记录,在这种情况下是否可以使用CASE?

ID            NAME          SCHOOL          GRADUATIONYEAR           DEGREE                MAJOR
--------------------------------------------------------------------------------------------------
100           Ben         University1          2015             Bachelor of Arts           Major1
100           Ben         University2          2017             Master of Science          Major3

解决方法

使用row_number()

select *
from (
    select
        t.*,row_number() over(
            partition by name,school,graduationyear,degree 
            order by major
        ) rn
    from mytable t
) t
where rn = 1

当两行具有相同的目标,学校,毕业年份和学位时,查询将按字母顺序保留最小major的行(您可以更改{{1的order by子句}}(如果您需要其他条件)。

如果您想要row_number()声明:

delete

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。