首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >1表,多列,一列重复,移除重复

1表,多列,一列重复,移除重复
EN

Stack Overflow用户
提问于 2019-11-15 02:09:39
回答 2查看 54关注 0票数 0

我有一个表,它有30多个需要查询的列,还有一个列有重复的条目。如何通过一个列查询表,而不列出要在select中显示的每个列。

例如 -

代码语言:javascript
代码运行次数:0
运行
复制
Select * 
from Event
where subject_ID = 49
and date between '01-NOV-2019' and '14-NOV-2019'

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

尝试过

代码语言:javascript
代码运行次数:0
运行
复制
select distinct case_id, * 
from event
where subject_ID = 49
and date between '01-NOV-2019' and '14-NOV-2019'

没起作用。

我应该澄清,每一行都是重复的。每组数据有2行,case_id是唯一区分重复数据的数据。有没有一种方法可以说只显示奇数行?

EN

回答 2

Stack Overflow用户

发布于 2019-11-15 02:14:46

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

代码语言:javascript
代码运行次数:0
运行
复制
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
票数 0
EN

Stack Overflow用户

发布于 2019-11-15 02:24:29

如果您有一个列,并且希望每个值都有一行,则可以使用row_number()。在下面的代码中,case_id是这个列:

代码语言:javascript
代码运行次数:0
运行
复制
Select *
from (select e.*,
             row_number() over (partition by case_id order by case_id) as seqnum
      from Event e
      where subject_ID = 49 and date between '01-NOV-2019' and '14-NOV-2019'
     ) e
where seqnum = 1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58869360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档