ストアドプロシージャで次のことに遭遇しました。
for
select 1
from scan_queue
where ( date_time_locked is null )
and ( scan_seqno >= :varMinScanSeqno )
and ( scan_seqno <= :varMaxScanSeqno )
group by loan_id, collateral_id, insurance_id
into varNotUsed
do
varItemsToScan = varItemsToScan + 1;
私の最初の考えは、これはおそらくグループの数を数える非効率的な方法だと思いましたが、私の2番目の考えは、「とにかく、1つのクエリでそれをどのように書くのですか?」でした。そして、私には良い答えがありませんでした。(つまり、これは学術的な質問です。)IDを連結するソリューションを探しているわけではありません。
select count(distinct loan_id || collateral_id || insurance_id)
from scan_queue
where ( date_time_locked is null )
and ( scan_seqno >= :varMinScanSeqno )
and ( scan_seqno <= :varMaxScanSeqno )
この情報を照会するための最良の方法は何ですか?
編集:私は明らかにこれを十分に明確にしなかったので、私はFirebirdv1.5を使用しています。