[英]Dynamic WHERE condition based on variable
我在SQL Server中有以下行
((@data_inicial IS NULL OR @data_inicial = '')
OR
tbSO.dt_criacao >= CAST(@data_inicial AS DATE))
我需要根據接收到@cod_status的一個參數來使用字段tbSO.dt_criacao。
如果@cod_status = 1,我必須使用tbSO.dt_criacao
如果@cod_status = 2,我必須使用tbSO.dt_abertura
如果@cod_status = 3,我必須使用tbSO.dt_fechamento
您能幫我解決這個問題嗎?
最好的祝福
米爾頓·卡馬拉(Milton Camara)
下面的CASE語句不能滿足您的需求嗎? 您可能需要將then語句設置為變量。
CASE @cod_status
When 1 then tbSO.dt_criacao
When 2 Then tbSO.dt_abertura
When 3 Then tbSO.dt_fechamento
END
希望這可以幫助
((@data_inicial IS NULL OR @data_inicial = '')
OR
(@cod_status = 1 and tbSO.dt_criacao >= CAST(@data_inicial AS DATE))
OR
(@cod_status = 2 and tbSO.dt_abertura >= CAST(@data_inicial AS DATE))
OR
(@cod_status = 3 and tbSO.dt_fechamento >= CAST(@data_inicial AS DATE))
問候
CASE語句是在查詢中放入條件的野獸方法。 您可以使用Case語句計算依賴於其他列或條件的任何新列。 您也可以在SUM,AVG,計數等功能中使用case語句。 您還可以將case語句放在where條件中。
您可以使用以下語法..
SELECT *
FROM TABLE
WHERE
1 = CASE
WHEN (
(@data_inicial IS NULL OR @data_inicial = '')
OR
(
CASE @cod_status
When 1 then tbSO.dt_criacao
When 2 Then tbSO.dt_abertura
When 3 Then tbSO.dt_fechamento
END >= CAST(@data_inicial AS DATE)
)
) THEN 1 ELSE 0
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.