2013-04-11 79 views
0

我正在使用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行的D值都是相同的,所以我想要那些。

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

歡迎的StackOverflow!爲了在這裏得到積極的迴應,請顯示你的嘗試。 – 2013-04-11 16:32:19

+0

你可以在你的'WHEN'子句中用三個子查詢來計算每個列的最大值。其實,你如何比較你的D *列? – 2013-04-11 17:14:41

回答

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) 
)