Sql 选择不同列的所有列
我需要从一个有200多列的表中获取特定列的不同行。我怎样才能做到这一点 我曾经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或其他聚合函数。关键是,如果使
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不会和专栏的顺序混淆-如果他感到困惑,我当然可以帮助他。更了解这个理论,兄弟!你似乎很感兴趣。好的,好的。。