问题描述
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