Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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 选择不同列的所有列_Sql_Oracle - Fatal编程技术网

Sql 选择不同列的所有列

Sql 选择不同列的所有列,sql,oracle,Sql,Oracle,我需要从一个有200多列的表中获取特定列的不同行。我怎样才能做到这一点 我曾经 Select distinct col1 , * from table; 但它失败了 请提出一个优雅的方法来实现这一点 问候,, Tarun如果要为特定列中的每个不同值指定一行,则解决方案是: SELECT col1, MAX(col2), MAX(col3), MAX(col4), ... FROM mytable GROUP BY col1 我武断地选择了马克斯。它也可以是MIN或其他聚合函数。关键是,如果使

我需要从一个有200多列的表中获取特定列的不同行。我怎样才能做到这一点

我曾经

Select distinct col1 , * from table;
但它失败了

请提出一个优雅的方法来实现这一点

问候,,
Tarun

如果要为特定列中的每个不同值指定一行,则解决方案是:

SELECT col1, MAX(col2), MAX(col3), MAX(col4), ...
FROM mytable
GROUP BY col1
我武断地选择了马克斯。它也可以是MIN或其他聚合函数。关键是,如果使用GROUPBY确保在col1中每个值获得一行,那么所有其他列都必须位于聚合函数内


无法写入MAX*来对所有列进行处理。很抱歉,您必须写出所有列名,至少是您在此查询中需要的列名,可能不全是200。

我们可以为每个COL1生成一个行编号序列,然后选择每个序列的第一个条目

SELECT * FROM
(
  SELECT E.* , ROW_NUMBER() OVER( PARTITION BY COL1 ORDER BY 1) AS ID
    FROM YOURTABLE E
) MYDATA
 WHERE MYDATA.ID = 1

为什么按1点?为什么不点可乐呢?因为,按常量排序不是按该列排序。只是为了语法起见,按常量排序,OP可以选择那边的任何表达式!分区键的顺序仍然与常量相同。>为了语法起见,只使用常量。。。。lol。我希望OP不会和专栏的顺序混淆-如果他感到困惑,我当然可以帮助他。更了解这个理论,兄弟!你似乎很感兴趣。好的,好的。。