WITH t AS (SELECT areaId FROM 表
GROUP BY areaId HAVING COUNT(areaId) > 1)
SELECT * FROM 表 WHERE ReserverState = 'run' AND areaId IN(SELECT areaId FROM t)
UNION ALL
SELECT * FROM t WHERE areaId NOT IN (SELECT areaId FROM t)
select * from 表 where AreaID in('A01','A03','B01','B02','C01','C02' )
union all
select top 1 * from 表 where AreaID ='A02' and ReserveState = 'Run'
看函数应该是sqlserver的数据库,不知道是什么版本呢?
如果是2005或2008 可以这样写:
SELECT t.* FROM (
SELECT
ROW_NUMBER() OVER(PARTION BY t.AREAID ORDER BY ReserveState DESC )) as rn.
t.*
FROM TABLE t
WHERE 1=1
) t
WHERE t.rn=1