Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何对Oracle数据库中的行进行分组?_Sql_Oracle - Fatal编程技术网

Sql 如何对Oracle数据库中的行进行分组?

Sql 如何对Oracle数据库中的行进行分组?,sql,oracle,Sql,Oracle,我有下表 ___________________ Column 1 | Column 2 ------------------- 30 | 1 30 | 2 30 | 3 31 | 1 31 | 2 31 | 3 32 | 1 32 | 2 32 | 3 ... 我希望结果集是 ____________

我有下表

___________________
Column 1 | Column 2
-------------------
    30   |     1
    30   |     2
    30   |     3
    31   |     1
    31   |     2
    31   |     3
    32   |     1
    32   |     2
    32   |     3
    ...
我希望结果集是

   ___________________
   Column 1 | Column 2
   -------------------
       30   |     x (doesn't matter which one)
       31   |     x (doesn't matter which one)
       32   |     x (doesn't matter which one)
第2列并不重要的原因是因为第3-10列(我排除在外)对于第1列中的值相同的所有行都是完全相同的

我在OracleDB中尝试了大量不同的查询,但似乎没有任何效果

我试过:

 SELECT Column1, Column2 FROM table GROUP BY Column1
但正如中所解释的,这不是GROUPBY子句在Oracle中的工作方式

我也尝试过
选择DISTINCT
,但这也不起作用


我该怎么做呢?主要的问题是,这里的组的行为方式与我熟悉的MySQL中的不同。

如果您不关心哪个,只需使用
MAX()
MIN()


您必须使用聚合函数:

SELECT Column1, max(Column2) FROM table GROUP BY Column1
以上返回最高值(您也可以使用min或avg或任何其他agg函数)

也可以使用LISTAGG显示所有值:

SELECT Column1,
       listagg(Column2, ', ') within group(order by column2) as col2vals
  FROM table
 GROUP BY Column1

如果x输出不重要

select 
   Column1,
   rtrim (xmlagg (xmlelement (e, Column2 || ' | ')).extract ('//text()'), ' | ') Column2
from 
   [table_name]
group by 
   Column1
;

您是否尝试过从表组中按列1选择列1,min(列2)?您不能发布问题,然后获得答案,然后接受答案,然后自行声明“折旧”。您可以将其标记为版主删除。但过去,这个网站不是聊天室或BBS。它是其他人的资源。现在可能有一些人会误解,但保持现状是有长期价值的,这样其他人就可以学习;你怎么知道我在编辑它???@DevarshDesai,因为当你编辑一个问题时,它会在问题列表中显示为“更新的”,以捕捉你正在做的事情。@JakeGould,啊,我明白了,kk谢谢-学到的一课我对Oracle不太熟悉。。。但是,我认为
listag()
的工作方式与MySQL的
group_concat()
类似,对吗?是的,语法不同,但功能相同。但是,在Oracle中,不能将DISTINCT与LISTAGG一起使用,而在MySQL中,可以将DISTINCT与group_concat一起使用
select 
   Column1,
   rtrim (xmlagg (xmlelement (e, Column2 || ' | ')).extract ('//text()'), ' | ') Column2
from 
   [table_name]
group by 
   Column1
;