我需要从具有超过200列的表中获取特定列的不同行。我怎样才能做到这一点?
我用过
Select distinct col1 , * from table;
但失败了。
请提出一个优雅的方法来实现这一目标。
此致 塔伦
答案 0 :(得分:0)
如果要为特定列中的每个不同值创建一行,则解决方案是:
SELECT col1, MAX(col2), MAX(col3), MAX(col4), ...
FROM mytable
GROUP BY col1
我随意选择了MAX()。它也可以是MIN()或其他一些聚合函数。关键是如果你使用GROUP BY来确保在col1中每个值获得一行,那么 all 其他列必须在聚合函数内。
没有办法写MAX(*)来获得所有列的处理。抱歉,您必须写出所有列名称(至少在此查询中需要的列名称,可能不是全部200个)。
答案 1 :(得分:0)
我们可以为每个ROW_NUMBER()
生成一个COL1
序列,然后选择每个序列的第一个条目。
SELECT * FROM
(
SELECT E.* , ROW_NUMBER() OVER( PARTITION BY COL1 ORDER BY 1) AS ID
FROM YOURTABLE E
) MYDATA
WHERE MYDATA.ID = 1