次の列を持つテーブルがあります
email, id, date
email+id には一意のキーがあるため、テーブルには複数の電子メール アドレスを含めることができます。id はヌルにすることができます。
結果を次の形式で返したい
email, first date, number of ids, first id date (if number of ids not null)
また
dave@myfirm.con, 2013-06-11, 0, NULL
alan@myfirm.con, 2013-06-12, 2, 2013-06-13
私のクエリは、効率的でありながら、私が望むものにかなり近いものです。
SELECT TOP (@rows * @page) email, MIN([date]) as [date],COUNT(id) as [ids],
[x] = CASE COUNT(id) WHEN 0 THEN NULL ELSE MIN([date]) END
FROM Table
GROUP BY email ORDER by MIN([date])
ただし、このバージョンのクエリは、null 以外のエントリがある場合、各電子メールの全体的な MIN(日付) を返します。id
ID がない場合に MIN(date) を無効にする方法はありますか? ID が 0 の場合に多数の日数を追加し、date
これの MIN を取得するソリューションに取り組んでいますが、よりスマートな方法が必要なようです。