select diseaseid, postalcode
from
(
select
postalcode,
diseaseid,
row_number() over (partition by postalcode order by count desc) as row
from
(
select postalcode, count(postalcode) as count, diseaseid
from tblDiseaseTrack
group by postalcode, diseaseid
) as T1
) as T2
where row = 1
order by postalcode
這將返回你想要什麼:
DiseaseID PostalCode
3 111
1 222
5 333
編輯:
像同一查詢上面,但加入從第二個表中獲取城市名稱:
select diseaseid, T2.postalcode, city
from
(
select
postalcode,
diseaseid,
row_number() over (partition by postalcode order by count desc) as row
from
(
select postalcode, count(postalcode) as count, diseaseid
from @tblDiseaseTrack
group by postalcode, diseaseid
) as T1
) as T2
inner join tblcity on T2.postalcode = tblcity.postalcode
where row = 1
order by postalcode
請注意,我在城市表中使用了相同的列名PostalCode
,所以我必須在最外面的查詢中加上PostalCode的前綴:T2.postalcode
而不是postalcode
。
否則查詢將與消息崩潰:
不明確的列名「郵編」
...因爲SQL Server不知道,我想這兩個PostalCodes的。
maaan ...謝謝你的答案!是的,它確實給了我想要的東西..再次感謝你:) –
希望我不打擾,我可以知道,我如何應用內部連接這個SQL查詢:),我需要得到的城市名稱出來tblCity根據postalCode在結果中顯示:)提前致謝 –
@hh_shan:查看我的回答! –