【发布时间】:2013-02-27 06:10:48
【问题描述】:
这就是一个看似简单的练习变成了不过。我什至无法弄清楚我的语法。
Readings 表包含多个用户的坐标和时间读数。我现在只想将其组织为每个用户的连续时间间隔。
数据:
CREATE TABLE [Readings] (
user_id varchar(10),
reading_time int,
x decimal(10,2),
y decimal(10,2) );
INSERT INTO Readings VALUES
('u1', 60, 345, 400),
('u1', 100, 560,300),
('u2', 35, 1024, 250),
('u1', 90, 450, 450),
('u3', 150, 600, 100),
('u3', 100, 500, 125);
我的错误代码:
SELECT r.user_id, r.reading_time start_time, rm.reading_time end_time,
(CONVERT(varchar, r.x)+' ; '+CONVERT(varchar, r.y)) start_point,
(CONVERT(varchar, rm.x)+' ; '+CONVERT(varchar, rm.y)) end_point
FROM Readings r
JOIN (SELECT TOP 1 r2.user_id, r2.reading_time, r2.x, r2.y
FROM Readings r2
WHERE r2.user_id=r.user_id and
r2.reading_time < r.reading_time
ORDER BY r2.reading time desc) rm
ON r.user_id=rm.user_id
ORDER BY 1,2 desc;
你能指出我的语法错误吗?
【问题讨论】:
-
SQL 是语言。您使用的是哪个 DBMS? (我怀疑来自
TOP的 SQL-Server,但我可能是错的。)您还应该添加您正在使用的版本。 -
@ypercube 看起来像基于方括号和
TOP语法的 sql server -
你得到什么错误信息?
-
我在玩 SQL Fiddle 的 MS SQL Server 2008。
-
虐待狂的想法:创建一个名为 SQL 的 DMBS。
标签: sql sql-server sql-server-2008 group-by