首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择distinct和非distinct列值

选择distinct和非distinct列值
EN

Stack Overflow用户
提问于 2013-02-26 04:34:28
回答 3查看 18.6K关注 0票数 8

我想运行一个根据colA和colB的值消除重复行的查询。但是,我仍然希望返回colC和colD的值。

下面是一个简单的例子,说明了我目前所掌握的内容:

代码语言:javascript
复制
SELECT DISTINCT colA, colB   ?colC, colD?
FROM TABLE1

代码语言:javascript
复制
SELECT colA, colB    ?colC, colD?
FROM TABLE1
GROUP BY colA, colB

这两种方法都不允许我返回colC和colD,除非我将它们作为不同的值或像colA和colB这样的组进行检查。我不想这样做,只有colA和colB在一起需要是不同的,而不是colC和colD。我只想把它们还回去。

你有什么办法让我做到这一点吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-26 04:49:16

你想要list_agg

代码语言:javascript
复制
select colA, colB,
       list_agg(distinct colC, ','),
       list_agg(distinct colD, ',')
from Table1
Group by ColA, ColB

如果任何任意值都适用于ColC和colD,则可以使用min()

代码语言:javascript
复制
select colA, colB, min(colC), min(colD)
from Table1
Group by ColA, ColB
票数 11
EN

Stack Overflow用户

发布于 2013-02-26 05:15:14

DISTINCT应用于您选择的所有值,而不仅仅是某些列。在您的情况下,它将适用于所有: colA,colB,colC,colD。不可能选择所有列并使一些列不同,而另一些列则不同。要做到这一点,唯一的方法如戈登的例子所示,这是唯一有效的例子和答案。

票数 2
EN

Stack Overflow用户

发布于 2013-02-26 05:30:14

也许可以使用普通集合运算

with UNION和UNION ALL (参见http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries004.htm)

UNION colA和colB将消除这些列中重复的条目,而UNION ALL将保留colC和colD中的所有值

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15075970

复制
相关文章

相似问题

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