私は、ストアドプロシージャに次のように出会っ:ねえ、どのように書くでしょう」、Firebird 1.5の単一のSQLクエリで異なるグループの数を取得しますか?
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;
私が最初に考えたのは、これはおそらく、グループの数をカウントするのは非効率的な方法であるということでしたが、私の考え直しましたとにかく、単一のクエリでそれは? "そして私は良い答えがありませんでした。 (これは学術的問題の詳細です。)私はそうのように、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)
この情報を照会するための最良の方法は何ですか?
EDIT:明らかにこれを明確にしていないので、私はFirebird v1.5を使用しています。
私は置きますFirebirdをタグとして使用していますが、明確にするために、Firebird 1.5以降のRDBMSで動作するソリューションに特に関心があります。 :) – Nelson
このコメントは質問の一部となるには十分重要です!私はFirebirdがDBタイプであったことさえ知りませんでした! :) –
@Aviad、私はあなたの推薦に従って質問を更新しました。あなたのコメントをありがとう、私はここで比較的新しいので、タグが十分であると仮定していた(これは実際に私の最初の質問です)。 – Nelson