我想运行一个查询,根据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。我只是想归还他们。
关于如何实现这一目标的任何想法?
答案 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中的所有值