我正在使用SQL 2000。鉴于下表:
F1 D1 D2 D3 LN
==================================================
1 1/1 1/1 1/1 1
1 2/1 1/1 1/1 2
2 1/1 1/1 1/1 1
2 1/1 1/1 1/1 2
我需要获得D1-D3中具有最高值的行。但是,如果它们都是相同的,那么我想要返回所有这些。因此上面返回的表的结果如下,因为第2行的D1值为2/1,所以我不需要第1行,第3行和第4行的值都是相同的,所以我想要两者那些。
F1 D1 D2 D3 LN
==================================================
1 2/1 1/1 1/1 2
2 1/1 1/1 1/1 1
2 1/1 1/1 1/1 2
谢谢。
答案 0 :(得分:0)
您提供的数据不足以解决问题,但您可以尝试这样做:
create view T1 as
(
select F1, MAX(D1) D1, MAX(D2) D2, MAX(D3) D3
from table_3
group by F1
);
go
select *
from table_3 a inner join t1 b
on
a.F1 = b.F1 and a.D1 = b.D1 and a.D2 = b.D2 and a.D3 = b.d3;
这个
select *
from Table_3 a
where exists
(
select F1, MAX(D1) D1, MAX(D2) D2, MAX(D3) D3
from table_3 b
group by F1
having a.F1 = b.F1 and a.D1 = MAX(b.D1) and a.D2 = MAX(b.D2) and a.D3 = MAX(b.d3)
)