我是SQL的新手,无法找到我的问题的答案。我只有一个大表,需要从其中提取两个不同的列,其中包含来自其他列的额外数据。
示例:
表1
id animal color size name, breed etc
1 cat white medium
2 cat white big
3 dog white medium
5 dog white big
6 cat black small
7 cat black small
我问动物和颜色的“选择不同的...”和id和大小的两个列。所以我需要这样回答:
结果:
1 cat white medium
3 dog white medium
6 cat black small
我试图加入桌子,但没有成功。
答案 0 :(得分:0)
根据你所描述的,这样的事情可能会起作用:
SQL> with test (id, animal, color, c_size) as
2 (select 1, 'cat', 'white', 'medium' from dual union
3 select 2, 'cat', 'white', 'big' from dual union
4 select 3, 'dog', 'white', 'medium' from dual union
5 select 5, 'dog', 'white', 'big' from dual union
6 select 6, 'cat', 'black', 'small' from dual union
7 select 7, 'cat', 'black', 'small' from dual
8 )
9 select min(id) id, animal, color, max(c_size) c_size
10 from test
11 group by animal, color;
ID ANI COLOR C_SIZE
---------- --- ----- ------
1 cat white medium
3 dog white medium
6 cat black small
SQL>
答案 1 :(得分:0)
这可以使用over()分区子句来实现。
从中选择动物,颜色,大小 ( 选择动物,颜色,大小,row_number()(按动物划分,颜色顺序按大小)作为rowx 来自table_name ) 作为X,其中rowx = 1;