2010-11-22 9 views
1

をグループ化から除外する方法I持って、次のSQLGROUP BYのT-SQL余分な列。結果に含めるが、

SELECT  CNumber, MAX(FormSubmitted), Score 
FROM   dbo.vw_MSA 
WHERE  (Score IS NOT NULL) 
GROUP BY CNumber, Score 

結果:

CNumber FormSubmitted     Score 
0011509 2010-09-13 10:22:46.763   11 
0016239 2010-09-28 13:53:58.557   8* 
0016239 2010-10-12 11:52:33.150   12 
0018792 2010-11-02 13:17:37.437   3 
0051089 2010-10-07 11:38:29.257   13 
0051091 2010-10-01 12:01:30.450   0 
0067987 2010-09-29 11:06:48.490   7 
0079351 2010-09-30 09:49:10.747   34 
0833933 2010-09-30 12:54:19.013   6 
0848185 2010-10-07 12:08:42.087   6 
5010590 2010-11-01 09:54:14.790   6* 
5010590 2010-11-16 15:23:50.350   12 

私は簡単にこれを並べ替えることができるはずと確信しているが、何らかの理由で、私は」 mは苦闘している。スコアには結果が含まれている必要がありますが、これをGROUP BYに追加すると、必然的に最新のFormSubmitted日付のレコード以上のものが返されます。誰でもこのクエリを更新する際に助けてもらうことができますので、結果にスコアが表示されますが、最大のFormSubmit日数のレコードのみが表示されます。

+0

あなたはpustレコードセットを希望することはできますか? – demas

答えて

1
SELECT  A.CNumber, A.FormSubmitted, A.Score 
FROM   dbo.vw_MSA A 
INNER JOIN 
(SELECT CNumber, MAX(FormSubmitted) AS MaxSubmitted 
FROM dbo.vw_MSA 
WHERE  (Score IS NOT NULL) 
GROUP BY CNumber) AS B 
ON A.CNumber = B.CNumber AND A.FormSubmitted = B.MaxSubmitted 
+0

TYVM。私は本当に私のSQL mojoをブラシする必要があります! –

2

(CNumber, FormSubmitted)が一意であることが保証されると仮定すると:

SELECT T1.CNumber, T1.FormSubmitted, T1.Score 
FROM dbo.vw_MSA T1 
JOIN 
(
    SELECT CNumber, MAX(FormSubmitted) AS MaxFormSubmitted 
    FROM dbo.vw_MSA 
    WHERE Score IS NOT NULL 
    GROUP BY CNumber 
) T2 
ON T1.CNumber = T2.CNumber 
AND T1.CNumber = T2.MaxFormSubmitted 
関連する問題