我有表Places
與下面的列聚合函數:MIN(),還有一些標準
PlaceId CityId Name Postcode
-----------------------------------------
1 1 Place1 NULL
2 1 Place1 10000
3 2 Place1 10300
4 2 Place2 10500
5 3 Place3 NULL
6 3 Place3 NULL
輸出我想要的是:
PlaceId CityId Name Postcode
-----------------------------------------
2 1 Place1 10000
3 2 Place1 10300
4 2 Place2 10500
5 3 Place3 NULL
所以,我需要如下:
如果一個城市有CityId
和Name
列重複,那麼我需要一行與最小PlaceId
。但是,如果兩個副本中的第一個在Postcode
列中有NULL,並且較大的id在同一列中有一些值,那麼我需要輸出中的第二行(例如,帶有ID 1和2的行,帶有ID 2的返回行)。在所有的副本在列郵編NULL值的情況下,那麼就返回最小PlaceId
(例如,IDS 5和第6行,返回的行ID爲5)
所以,列Postcode
在最終輸出
我影響已經試過這樣的:
SELECT
MIN(nm.PlaceId) AS PlaceId,
nm.CityId,
nm.name,
COUNT(*) AS Number
FROM dbo.Place AS nm
GROUP BY
nm.CityId ,
nm.name
我可以解決這個問題,但解決方案不好,我要求一些漂亮和優雅的解決方案。
什麼是郵編的數據類型? – 2014-09-11 09:52:09