SQL Query返回不需要的行

时间:2017-07-03 13:00:40

标签: sql

我正在尝试操作从select语句返回的一些行。

目前我正在回复多行作为我正在查询的人,已移动内部住宿(同一网站内的房屋),但我只想退回它们,如果网站本身已经更改。

例如我正在......

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

在这个例子中,我希望看到,如果第一个约克条目,然后是利兹条目,因为网站没有改变。

1 个答案:

答案 0 :(得分: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;

或者在2005年的MSSQL中

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;

请下次,按照上面的评论(关于如何发布问题),指定数据库(通常SQL不够)并发布您尝试过的内容。