我有一个带有一个名为orig的表的sqlite3数据库:
CREATE TABLE orig (sdate date, stime integer, orbnum integer);
我想要做的是为每个orbnum选择第一个日期/时间。唯一的问题是,stime将时间视为一个非常笨拙的整数。
假设一个六位数字,前两位数表示小时数,即3./4。显示分钟,最后两位数字显示秒数。所以12345的值是1:23:45,而值123456是12:34:56。
我想我会使用两个嵌套的join / group语句来做这件事,但不知怎的,我无法让它正常工作。这是我到目前为止所得到的:
select s.orbnum, s.sdate, s.stime
from (
select t.orbnum, t.sdate, t.stime, min(t.sdate) as minsdate
from (
select orbnum, sdate, stime, min(stime) as minstime
from scia group by orbnum, sdate
) as t inner join orig as s on s.stime = t.minstime and s.sdate = t.sdate and s.orbnum = t.orbnum
) as d inner join scia as s on s.stime = d.stime and s.sdate = minsdate and s.orbnum = d.orbnum
where s.sdate >= '2002-08-01' limit 0,200;
这是我得到的错误:
Error: no such column: t.orbnum
我确定这只是一些愚蠢的错误,但实际上,我对SQL很新......
非常感谢任何帮助:)
编辑:
在修复了明显的拼写错误之后,查询运行 - 但返回一个空的结果集。然而,该表保存了大约10年的数据,每天大约12个orbnums,每个orbnum大约4-5个不同的时间。所以我猜这个查询的逻辑存在一些错误......
答案 0 :(得分:0)
在您的上一次加入中,您有d
,这是您的双重嵌套选择的结果,并且您加入了s
。从那里,t
不可见。这就是为什么你得到“没有这样的列:t.orbnum”的错误。也许你的意思是s.orbnum = d.orbnum
?