我有表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