1个表,多列,一列重复项,删除重复项

时间:2019-11-15 02:09:39

标签: sql duplicates distinct

我有一个表,该表包含需要查询的30多个列,其中一个列具有重复的条目。如何查询表并按一列进行区分,而不列出要在select中显示的每一列。
例如-

Select * 
from Event
where subject_ID = 49
and date between '01-NOV-2019' and '14-NOV-2019'

这将显示100行,但应该只有50行,而case_id列是唯一区分重复项的列。我需要查看表中的所有列,但不希望重复case_id行,并且真的不想列出select中的所有列。

尝试

select distinct case_id, * 
from event
where subject_ID = 49
and date between '01-NOV-2019' and '14-NOV-2019'

没有用。

我应该澄清一下,每隔一行都是重复的。每组数据都有2行,而case_id是唯一区分重复项的数据。有没有办法说只显示奇数行?

2 个答案:

答案 0 :(得分:0)

是什么导致您的distinct是您的*,您可以使用row_number()partition by case_idtop获得case_id

select * from 
    (Select row_number() over (partition by case_id order by case_id) rn, * from Event 
        where subject_ID = 49 and date between '01-NOV-2019' and '14-NOV-2019'
    ) t1 
where t1.rn = 1

答案 1 :(得分:0)

如果有一列并且每个值都需要一行,则可以使用 WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.copyFrom(getDialog().getWindow().getAttributes()); params.gravity = Gravity.BOTTOM; params.y = YOUR_ANCHOR_VIEW.getHeight(); getDialog().getWindow().setAttributes(params); 。在以下代码中,row_number()是此列:

case_id