質問
データを含む次のテーブル構造を考慮してください-
AdjusterID | CompanyID | FirstName | LastName | EmailID
============================================================
1001 | Sterling | Jane | Stewart | janexxx@sterlin.com
1002 | Sterling | David | Boon | dav@sterlin.com
1003 | PHH | Irfan | Ahmed | irfan@phh.com
1004 | PHH | Rahul | Khanna | rahul@phh.com
============================================================
AdjusterIDが主キーである場合。ここにはない。会社のアジャスターの。
会社ごとに単一の調整者をリストするクエリが必要です。つまり、結果を-pとして取得する必要があります
========================================================
1001 | Sterling | Jane | Stewart | janexxx@sterlin.com
1003 | PHH | Irfan | Ahmed | irfan@phh.com
========================================================
誰かが私を助けることができれば、それは素晴らしいことです。
解決
1つの方法:
SELECT * FROM Adjusters
WHERE AdjusterID IN(SELECT min(AdjusterID)
FROM Adjusters GROUP BY CompanyID)
ユニオンやイテレーションを含む他の方法はいくつかありますが、これは簡単に始められるほど簡単です。
編集:これは、例に従って、最も低いIDのアジャスターが必要であることを前提としています
他のヒント
ジェレミーからの答えは有効なものだとわかっているので、繰り返しません。しかし、いわゆるタイブレーカーを使用して別のものを試すことができます:
--//using a tie-breaker. Should be very fast on the PK field
--// but it would be good to have an index on CompanyID
SELECT t.*
FROM MyTable t
WHERE t.AdjusterID = (SELECT TOP 1 x.AdjusterID FROM MyTable x WHERE x.CompanyID = t.CompanyID ORDER BY AdjusterID)
パフォーマンスの面で優れている可能性があります。しかし、さらに便利なのは、テーブルに別の列があり、各会社に1つだけでなく、他の列のランキングを基準として各会社の最高を選択したい場合です。したがって、 ORDER BY AdjusterID
の代わりに、他の列で並べ替えます。
所属していません StackOverflow