2017-07-03 108 views
-4

我想操纵select语句返回的一些行。SQL查询返回不需要的行

目前我收回多行作为我查询的人,已经移动了内部住宿(同一网站内的房屋),但我只想返回它们,如果网站本身发生了变化。

比如我正在..

+------------+-------+------------+ 
| LocationlD | Site | MovedDate | 
+------------+-------+------------+ 
|   1 | York | 01/01/2011 | 
|   3 | York | 02/01/2011 | 
|   2 | Leeds | 05/05/2011 | 
+------------+-------+------------+ 

在这个例子中,一切我都希望看到,如果第一个纽约条目,然后利兹条目,网站并没有改变。

+0

您是如何查询数据库的? – skm

+0

向我们显示您的查询,数据库结构,样本数据和预期输出。然后我们能够提供帮助。 – HoneyBadger

+1

请阅读“如何创建最小,完整和可验证的示例”https://stackoverflow.com/help/mcve –

回答

0

您可以使用:

SELECT A.LOCATIONLD, A.SITE, A.MOVEDDATE 
FROM YOURTABLE A 
INNER JOIN (SELECT SITE, MIN(MOVEDDATE) AS MOVEDDATE_MIN 
      FROM YOURTABLE 
      GROUP BY SITE) B ON A.SITE = B.SITE AND A.MOVEDDATE = B.MOVEDDATE_MIN; 

或者

SELECT LOCATIONLD, SITE, MOVEDDATE 
FROM (
    SELECT LOCATIONLD, SITE, MOVEDDATE 
    , ROW_NUMBER() OVER (PARTITIONED BY SITE ORDER BY MOVEDDATE DESC) AS RN 
    FROM YOURTABLE 
    ) A 
WHERE RN =1; 

PLS,下一次在MSSQL 2005年,按照上面的意见(如何发布问题),指定一个数据库(通常是SQL不能够),并发布你也尝试过。