caseステートメントでwhileループとif条件(関数呼び出し付き)を実装しようとしています。基本的には、私はこれをやろうとしています:whileステートメントcaseステートメントt-sql
begin
case
when (condition1 and condition 2 and ncolumn_num between 6 and 9)
then
while @i < 10
begin
if(hsip.Is_numeric(hsip.getTempResponseById(@cregion, @cState_code, @nFY, @nReport_id, @nsection_id, @nquestion_number, @ndisplay_number, @nquestion_number, @nquestion_part_number, @suser_id, @nrow_number, i, @suser_id)))
@nrunningtotal = @nrunningtotal + hsip.getTempResponseById(@cRegion, @cState_code, @nFY, @nReport_id, @nsection_id, @nquestion_number, @ndisplay_number, @nquestion_number,
@nquestion_part_number, @suser_id, @nrow_number, @ncolumn_number, @suser_id)
end if
end
case文のwhileループとif条件を実装できますか?私のビジネスロジックでは、6から9までの列を合計し、最後の合計をcol:10とする必要があります。
私は2つの関数を持っています:gettempresponsebyid
:応答文字列を返し、番号に変換する関数はisnumeric
です。
誰かがこれを行うより良い方法を提案してください。このエラーが発生します:
INCORRECT SYNTAX NEAR IF AND INCORRECT SYNTAX NEAR RUNNINGTOTAL.
ddl、入力データ、予想出力を提供できますか?ループ中にdootを実行する必要があるように見える –
これは 'CASE' *の式*のためではありません。サンプルデータと必要な結果を共有してください。あなたは問題についてすべて間違っているように思えます(読んでください:[XYの問題とは何ですか?](http://meta.stackexchange.com/a/66378)) – Siyual
あなたはあなたと同じようにデータ処理を考えています従来のプログラミング言語 - 繰り返し。 SQLには異なるパラダイムがあり、主な用途は反復処理を含まない。あなたはTSQL拡張で反復することができますが、それはSQLに二次的です。あなたは、これらの日のほとんどの時間ウィンドウ関数を使用して、合計を実行します。 – ajeh