我有一张桌子TableX
。它包含三列:A
INT
和B
INT
(C
VARCHAR(1)
列 C 的有效值是列“A”或“B”的名称)。我需要计算满足以下任一条件的出现次数:
- 当
C
isNULL
和does包含大于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
。SET
决赛中的明显有问题WHERE
。我已经编写了一些此类 SP,如果我能提供帮助,我想避免使用复杂的 TSQL...
如何动态获取对子WHERE
句中相关列的引用?
谢谢你的时间。