クエリを実行できますか:
Select id, (
select count(*) from tableA as a where a.value < a.id
)
from tableA as a where id < 5
そして、私が望んでいた結果を得る。そうでない場合、2 つのクエリを実行せずに同じことを行う方法はありますか?
SELECT id, COUNT(id) FROM tableA a WHERE id < 5 GROUP BY id HAVING a.value < a.id
試す
Select a.id, mycount
from tableA as a
join
(select a1.id, count(*) as mycount from tableA as a1 where a.value < a.id) b
on a.id = b.id
where a.id < 5
できますが、エイリアスを修正する必要があるかもしれません。
また、単一の選択ステートメントとして実行できる場合よりもはるかに遅くなります。
達成しようとしている出力の例を教えてください。また、データベース サーバーの種類 (ms、mysql、oracle?) を教えてください。以下のようなことを考えていますが、正確な構文はサーバーの種類によって異なる場合があります。
SELECT id, COUNT(CASE WHEN a.value < a.id THEN a.id ELSE NULL END) AS count
FROM tableA AS a
GROUP BY id