2017-03-28 26 views
0

私は次の条件を取得しようとしています: 各LIDは複数のBIDに関連付けられ、各BIDにはAvgTrustValueがあります。 私は次のことを行ってきた各LID関連付け最小値を取得

の最安AvgTrustValueとBID見つけたい:それは私だけ以下を与えるしかし

SELECT DISTINCT LID, T1.BID, AvgTrustValue 
FROM Loans T1, Repayments T2, 
    (SELECT BID, AVG(trust_value) As AvgTrustValue 
    FROM Assign 
    GROUP BY BID) T3 
WHERE T1.LoanID = T2.LoanID 
AND T1.BID = T3.BID 
ORDER BY LID 

を:

| LID | BID | 
|S2262450A | S7444319C | 82 
|S2848191X | S7611209X | 76 
|S2848191X | S9981233W | 100 
|S4495282I | S7444319C | 82 
|S4792394D | S7444319C | 82 
|S4792394D | S7611209X | 76 
|S7145303Q | S7611209X | 76 
|S7173102K | S7444319C | 82 

私が望む何を取得するには次のとおりです:

| LID | BID | 
|S2262450A | S7444319C | 82 
|S2848191X | S7611209X | 76 
|S4495282I | S7444319C | 82 
|S4792394D | S7611209X | 76 
|S7145303Q | S7611209X | 76 
|S7173102K | S7444319C | 82 

送信しても失敗しました:

SELECT DISTINCT LID, T1.BID, min(AvgTrustValue) 
FROM Loans T1, Repayments T2, 
    (SELECT BID, AVG(trust_value) As AvgTrustValue 
    FROM Assign 
    GROUP BY BID) T3 
WHERE T1.LoanID = T2.LoanID 
AND T1.BID = T3.BID 
GROUP BY LID 
ORDER BY LID 

ありがとうございます。

答えて

2

あなたは少なくともAvgTrustValueと蓋ごとに1行を取得するために、ウィンドウ関数row_numberを使用することができます。

select * 
from (
    select t.*, row_number() over (
      partition by lid order by AvgTrustValue 
      ) as rn 
    from your_table t 
    ) t 
where rn = 1; 

またはTOP with tiesを使用します。

select top 1 with ties * 
from your_table 
order by row_number() over (
     partition by lid order by AvgTrustValue 
     ); 
+0

私はWITH TIESオプションが好きです...いつもきれいに見えます+1 –

+0

ありがとうございます。 TOP WITH TIESソリューションは華やかです。 –

0

私は「存在しませ」だと思うが、あまりにも

、OKだろう

your_tableから が存在しません(あなたのテーブルからlid = a.lidとavgvalue> a.avgvalueを1つ選択してください)

関連する問題