我想實現一個while循環,如果條件(與函數調用)在case語句。基本上,我試圖做到這一點:while,如果情況下的條件語句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
我可以實現while循環,如果條件內case語句。我的商業邏輯要求我將總數從6列增加到9列,最終的總列數爲10列。
我有2個功能:gettempresponsebyid
:它返回響應字符串和isnumeric
函數,它轉換爲數字。
有人可以請建議一個更好的方式做到這一點。我得到這個錯誤:
INCORRECT SYNTAX NEAR IF AND INCORRECT SYNTAX NEAR RUNNINGTOTAL.
你能提供ddl,輸入數據和預期輸出嗎?看起來我們不需要做循環 –
這不是'CASE' *表達*的用途。請分享一些示例數據和期望的結果。這聽起來像你正在解決所有問題(閱讀:[什麼是XY問題?](http://meta.stackexchange.com/a/66378)) – Siyual
您正在考慮數據處理一個傳統的編程語言 - 迭代地。 SQL有不同的範例,其主要用途不包括迭代。您可以在TSQL擴展中進行迭代,但是這是次要的SQL。這些天大部分時間你都會使用窗口函數來運行總計。 – ajeh