ストアドプロシージャによる動的SQLについて
いつもお世話になっています。
SQLServer・ストアドプロシージャの、WHERE句を動的にしたいのですがうまくできません。
やりたいことは、履歴テーブルの受付、回答が済んでいる件数を取得したいのです。
回答時間は0時から5時までを一まとめ、20時から23時を一まとめ、その他は一時間毎に抽出したいのです。
CASE文で書いたのですが、エラーが起こってしまいます。
どのように書いたらよいのかご教授下さい。
受付時間が8時代の件数を取得する時、
このように書きました。
DECLARE @from_date datetime
DECLARE @to_date_last datetime
DECLARE @answer_count int
SET @from_date = '2004/04/06'
SET @to_date_last = '2004/06/05'
SET @answer_time = 9
SELECT Count(R.受付時間)
FROM 履歴 AS R
WHERE LEFT(CONVERT ( varchar(20) ,R.受付時間, 8),2) = '08'
AND R.受付時間 between @from_date and @to_date_last
CASE
WHEN @answertime = 5 THEN
AND LEFT(CONVERT ( varchar(20) ,R.回答時間, 8),2) <= '0' + LEFT( Convert(varchar(20),@answer_time),1)
WHEN @answertime > 5 AND @answertime < 10 THEN
AND LEFT(CONVERT ( varchar(20) ,R.回答時間, 8),2) = '0' + LEFT( Convert(varchar(20),@answer_time),1)
WHEN @answertime > 10 AND @answertime < 20 THEN
AND LEFT(CONVERT ( varchar(20) ,R.回答時間, 8),2) = Convert(varchar(20),@answer_time)
WHEN @answertime = 20 THEN
AND LEFT(CONVERT ( varchar(20) ,R.回答時間, 8),2) >= Convert(varchar(20),@answer_time)
END
お礼
早速のお返事ありがとうございます。 やっぱり無理なのですね・・・。 それがわかっただけでも収穫でした。 (できるかどうか判らないのが一番気持ち悪いので) きっぱりあきらめて別の方法を模索します。