Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从多个行/列返回最大值_Sql_Sql Server 2000 - Fatal编程技术网

Sql 从多个行/列返回最大值

Sql 从多个行/列返回最大值,sql,sql-server-2000,Sql,Sql Server 2000,我正在为此使用SQL2000。鉴于下表: 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

我正在为此使用SQL2000。鉴于下表:

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

谢谢。

您提供的数据不足以提供解决方案,但是您可以尝试以下方法:

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

欢迎来到StackOverflow!若要在此处获得积极响应,请显示您已尝试的内容。您可以在
WHEN
子句中使用三个子查询来更正它,每个子查询都计算单个列的最大值。实际上,如何比较D*列?