选择不同的和不同的列值

时间:2013-02-25 20:34:28

标签: sql oracle select group-by distinct

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

这是我到目前为止的一个简单例子:

SELECT DISTINCT colA, colB   ?colC, colD?
FROM TABLE1

SELECT colA, colB    ?colC, colD?
FROM TABLE1
GROUP BY colA, colB

除非我将它们检查为不同的值或像colA和colB这样的组,否则任何一种方法都不允许我返回colC和colD。我不想这样做,只有colA和colB一起需要区分colC和colD。我只是想归还他们。

关于如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:10)

您想要list_agg吗?

select colA, colB,
       list_agg(distinct colC, ','),
       list_agg(distinct colD, ',')
from Table1
Group by ColA, ColB

如果ColC和colD有任意值,您可以使用min()

select colA, colB, min(colC), min(colD)
from Table1
Group by ColA, ColB

答案 1 :(得分:0)

也许使用普通集操作

使用UNION和UNION ALL (见http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries004.htm

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