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

谢谢你。

4

1 回答 1

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)
)
于 2013-04-11T18:07:04.100 回答