我有一张桌子TableX。它包含三列:A INT和B INT(C VARCHAR(1)列 C 的有效值是列“A”或“B”的名称)。我需要计算满足以下任一条件的出现次数:
- 当
CisNULL和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句中相关列的引用?
谢谢你的时间。