2017-01-02 53 views
-5

我是在一组列的选择只有一个disctint列惹毛了,选择不同的只在一列与Oracle

比方说,我有这个疑问:SELECT A, B, C, D FROM TABLE WHERE A = 1

这是输出

A B C D 
1 2 8 5 
1 2 2 5 
1 2 3 5 

不过,我想是这样的:

A B C D 
1 2 8 5 

我怎么能做到这一点?

谢谢大家!

+0

你怎么知道你想要在第3栏8?你真的想要最高的价值(即聚合和分组)还是其他规则?而如果第二或第四列也有不同的值,对于不同的A? –

+1

为什么你认为“8”是“C”列的“不同”值? –

+0

如果您有几行“A = 1”,应选择哪一行?或者你可以选择“其中之一,哪一个并不重要”? – mathguy

回答

0

一种方法是命令由列C下降的结果,然后只取第一行:

SELECT * FROM (
    SELECT A, B, C, D 
    FROM TABLE_NAME 
    WHERE A = 1 
    ORDER BY C DESC 
) 
WHERE ROWNUM = 1; 

+1

这仍然是猜测,对吧?该要求并没有说“除了A = 1'和'C'被最大化之外,'B'和'D'的选择可以是随机的。” – mathguy

0

选择A,B,最大值(C):C,d 从表名 组A,B,D

0

如果要在C中尝试使用最高编号的结果,请尝试以下查询 SELECT A,B,C,D从表WHERE A = 1 AND C IN(SELECT MAX(C)FROM表) ;