2017-03-15 113 views
-3

我有一個存在的問題,我不知道我的方式。MIN和MAX SQL函數

我有一張表,其中包含下面的記錄。

enter image description here

我想退還是這樣的:

Result

基本上我需要退換是Documentid並且與排名列最小值紀錄的目標,但是對於結果欄公司,需要返回的那個應該是具有最大Rank的那個。

我只能使用一個函數,但我努力創造/使用MIN和MAX函數在同一時間產生的結果。

示例代碼

Select 
    documentid, 
    destination, 
    Company 
from Table1 
INNER JOIN (Select Destination, MIN(Rank) AS MINRank from Table1 group by Destination) mindest 
    ON mindest.destination = table1.destination 
+0

你嘗試過什麼?代碼示例會很有幫助。 –

+0

對不起,沒有提供我的示例代碼,因爲上面的只是一個虛擬數據,我的情況非常相似,但數據是保密的,所以我真的不能分享我對實際數據做了什麼。 但是,我會盡力爲上述提供一個。 –

+0

選擇documentid,目的地,從表1 INNER公司(FROM表1 組的目的地選擇目的地,MIN(等級)AS MINRank)mindest ON mindest.destination = table1.destination JOIN 這裏是我的示例代碼上面那個。 –

回答

1

請試試這個...

select documentid, destination, 
(select max(Rank) from table1) [Company] 
from Table1 
    where Rank = (select min(Rank) from table1) 
+0

謝謝。如果不是Table1,我只需要一個結果選擇集。 我試過,但沒有奏效。 –

+0

'select documentid,destination, (select max(Rank)from table1)[公司] from(SELECT ....)AS Table1 其中Rank =(從table1中選擇min(Rank))' –

+0

您將擁有用您的選擇替換所有table1 ... – maSTAShuFu

0

你要嗎?

DECLARE @tb TABLE(Documentid INT,[Rank] INT ,Destination VARCHAR(10),Company VARCHAR(10)) 
INSERT @tb 
SELECT 12393,1,'Westeros','CompanyA' UNION ALL 
SELECT 12394,2,'Westeros','CompanyB' UNION ALL 
SELECT 12395,3,'Essos','CompanyC' 
SELECT t.Documentid,t.Destination,t.MaxRank AS Company FROM (
    SELECT *,ROW_NUMBER()OVER(ORDER BY [Rank]) AS Seq,MAX([Rank])OVER() AS MaxRank FROM @tb 
) AS t WHERE t.seq=1 
 
Documentid Destination Company 
----------- ----------- ----------- 
12393  Westeros 3