1
我有一個表TableX
。它包含三列:A
INT
,B
INT
和C
VARCHAR(1)
(列C的有效值是'A'或'B'列的名稱)。我需要計算其中滿足以下任一條件發生的次數:WHERE子句中的SQL查詢依賴邏輯
- 當
C
是NULL
和確實包含以A
或大於零B
更大的價值。或 - 當
C
是NOT NULL
(即'A'或'B')並且指定列(A
或B
)中的值是零或NULL
。
我當前的存儲過程看起來像
CREATE PROCEDURE ispcSomeName @NumOcc INT OUTPUT
AS
SELECT COUNT(*) AS [NumOcc]
FROM TableName
WHERE (C IS NULL
AND ((A IS NOT NULL OR A > 0) OR
(B IS NOT NULL OR B > 0)))
OR (CritCarType IS NOT NULL
AND (CASE SET @TmpColumnName = CritCareType
WHEN N'A' THEN (A IS NULL OR A <= 0)
WHEN N'B' THEN (B IS NULL OR B <= 0)))
GO
的問題是,我需要檢查列C
引用。那就是如果C = 'A'
,我需要檢查A IS NOT NULL OR A <= 0
。最後WHERE
中的SET
顯然存在問題。我有幾種類型的SP作者,我想避免複雜的TSQL,如果我可以幫助它...
如何動態獲取WHERE
子句中的相關列的引用?
感謝您的時間。
非常感謝您的時間。這看起來不錯。我會盡快測試。再次感謝... – MoonKnight
我對'COALESCE(A,0)'中的零的相關性感到困惑,這是否只是確保A總是選擇在未定義的'CASE'語句中? – MoonKnight
這是在A爲空的情況下選擇的值 例如,條件「確實包含大於零的A或B中的值」所以如果A <= 0則不會滿足,如果A爲NULL則它不會滿足,因爲將會採用0來進行比較 – bummi