我正在尝试操作从select语句返回的一些行。
目前我正在回复多行作为我正在查询的人,已移动内部住宿(同一网站内的房屋),但我只想退回它们,如果网站本身已经更改。
例如我正在......
+------------+-------+------------+
| LocationlD | Site | MovedDate |
+------------+-------+------------+
| 1 | York | 01/01/2011 |
| 3 | York | 02/01/2011 |
| 2 | Leeds | 05/05/2011 |
+------------+-------+------------+
在这个例子中,我希望看到,如果第一个约克条目,然后是利兹条目,因为网站没有改变。
答案 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不够)并发布您尝试过的内容。