SQLデータベースにあるユーザーロギングテーブルの場合、レポート要求からいくつかのパラメーターを追跡します。このレポートでは、複数のIDを渡すことができ、それらすべてをデータベース列の単一の列に保存します。これが正規化されたデータのセットである場合、このための追加のテーブル設定が確実にありますが、これは継承されたものです...
2つ以上のIDが渡されたレポートが実行された回数を簡単にカウントするように求められました。すべてのレコードにコンマが含まれているため、複数のレポートが要求されたレコードの数を簡単に取得できます。
次に行う必要があるのは、列にコンマが表示される回数をカウントすることです。SQLでこれを行うにはどうすればよいですか?
--count the number of times more than 1 report was requested in the record
select
count(*) as cnt
from
[table]
where
RequestedReportParams Like '%,%'
SELECT LEN(RequestedReportParams) - LEN(REPLACE(RequestedReportParams, ',', ''))
FROM YourTable
WHERE .....
これは単純に列の長さとカンマを比較し、値の長さとカンマを削除したものを比較して、違いを示します(つまり、カンマの数)
あなたが尋ねられた質問に答える迅速で汚い方法は、これを行うことだと思われます:
select
count(*) as cnt
FROM
[table]
WHERE
RequestedReportParams Like '%,%,%'