求MSSQL查询语句

来源:百度知道 编辑:UC知道 时间:2024/06/28 00:26:09
求查询语句:
表中含有时间(TimeA)与地址(Addr)字段,想让查询结果先按时间排序,早找一条时间最早的记录后,接下来找与该记录相近地址的记录,完了后再按时间查找记录,与地址相近的记录。结果如下:

TimeA Addr
2008-4-1 12:12 人民路12号 (这条记录的时间最早)
2008-4-1 14:12 人民路1号 (与第一条记录相近的地址)
2008-4-1 18:12 人民路21号
2008-4-1 21:12 人民路22号
2008-4-1 13:12 中山路2号 (与第一条记录相近的地址没了后,按时间查询得到记录)
2008-4-1 17:12 中山路12号
2008-4-1 19:12 中山路13号
2008-4-1 15:12 锦绣路3号
2008-4-1 23:12 锦绣路6号
2008-4-1 16:12 南京路4号
2008-4-1 20:12 南京路5号
2008-4-1 22:12 南京路9号
望高手赐教
请回答前先把问题看清楚,“select timeA,Addr from Table1 order by timeA,Addr ”等就不要回了,根本不是这么回事,请看清楚后再回答,谢谢

DECLARE @mint datetime
SELECT @mint = (SELECT min(TimeA) FROM 表)

SELECT TimeA, Addr INTO #a FROM 表
WHERE substring(Addr, 0, 3) = (SELECT substring(Addr, 0, 3) FROM 表 WHERE TimeA = @mint) AND TimeA <> @mint

SELECT 'a' AS flag, TimeA, Addr FROM 表
WHERE TimeA = @mint
UNION
SELECT 'a' AS flag, * FROM #a
UNION
(SELECT 'b' AS flag, TimeA, Addr FROM 表
WHERE TimeA NOT IN (SELECT TimeA FROM #a) AND TimeA <> @mint)
ORDER BY flag, TimeA

sql2005测试正确
----------------------------------------------------------
DECLARE @mint datetime
SELECT @mint = (SELECT min(TimeA) FROM 表)

SELECT TimeA, Addr INTO #a FROM 表
WHERE substring(Addr, 0, 3) = (SELECT substring(Addr, 0, 3) FROM 表 WHERE TimeA = @mint) AND TimeA <> @mint

SELECT TimeA, Addr FROM(
SELECT 'a' AS flag, TimeA, Addr FROM 表
WHERE Time