2017-04-24 59 views
-1

假设我有一个这样的表:我想组根据条件对另一列一个列

 
Column A | Column B 
---------+--------- 
    1  | A 
    1  | B 
    2  | A 
    2  | A 
    2  | C 
    3  | A 
    3  | A 
    3  | B 
    3  | B 

我想写一个查询,以这样的方式,我得到一台组的值像这样:

 
Column A | Column B 
---------+--------- 
    1  | A 
    1  | B 
    2  | A 
    2  | C 
    3  | A 
    3  | B 
+1

请提供你是想组在什么条件。示例表结构不能清楚地说明条件是什么。 – jon3laze

回答

0

您正在寻找DISTINCTDISTINCT从查询结果中删除重复项。

select distinct * from mytable; 

另一种方法是聚合。按a和b分组,可以得到结果行。但是,只有当您需要聚合时,才会使用此功能,例如行数,总和,平均值等,因为否则您可以使用DISTINCT如图所示,应该更喜欢它。

select a, b, count(*) from mytable group by a, b; 
+0

我得到一个错误,ORA-00913:值太多 – user3769820

+1

然后你的查询与我的不同。显示你的尝试。 –

0

您需要在两列上都使用GROUP BY

select col1, col2 from test group by col1,col2; 

SQLFIDDLE

+0

我得到一个错误,ORA-00913:太多的值 – user3769820

+0

你正在使用'oracle',所以你应该用相关标签重新提出问题。 但是,如果您正在正确编写列名和表名,那么查询应该与oracle一起使用。 – Riad

+0

为什么GROUP BY在不涉及集合函数的情况下? – jarlh

相关问题