私は次のSYBASESQLに出くわしました。
-- Setup first
create table #t (id int, ts int)
go
insert into #t values (1, 2)
insert into #t values (1, 10)
insert into #t values (1, 20)
insert into #t values (1, 30)
insert into #t values (2, 5)
insert into #t values (2, 13)
insert into #t values (2, 25)
go
declare @time int select @time=11
-- This is the SQL I am asking about
select * from (select * from #t where ts <= @time) t group by id having ts = max(ts)
go
このSQLの結果は次のとおりです。
id ts
----------- -----------
1 10
2 5
これは、グループではなく行に適用されたHAVING条件のように見えます。このケースが説明されているSybase15.5のドキュメントがある場所を誰かに教えてもらえますか?私が見るのは「HAVINGはグループで動作する」だけです。私がドキュメントで見る最も近いものは次のとおりです:
持つ句には、選択リストにもgroupby句にも含まれない列または式を含めることができます。
(ここから引用)。
しかし、彼らはあなたがそれをしたときに何が起こるかを正確に説明していません。