0
美好的一天。我有一張名爲subObjGroup
的表格。我從這張表中選擇並對幾個欄目進行案例陳述。我正在查看typeCol
列,以便分類使用哪些適當的嵌套case操作符。腳本中的CASE聲明不分段行進行比較
問題是,當它執行語句時,我得到vCheck
列的結果不正確。我沒有得到基於病例陳述標準的數據。不知道我做錯了什麼。在numid和value是否相同的情況下,會出現幕後的「掛鉤」或「鏈接」嗎?任何幫助最受讚賞。
subObjGroup表與vCheck
列不正確的結果
groupid eventid numid tagVal greaterThan greaterEqThan lessThan lessEqThan equalTo typeCol vCheck activeid getVal
28 18 9000001 NULL NULL NULL 105 NULL NULL 3 1 68 92.907
9 19 9000001 NULL NULL NULL 105 NULL NULL 3 1 68 92.907
10 20 9000001 NULL 105 NULL NULL NULL NULL 1 0 68 92.907
理想的效果,請看看vCheck
列
groupid eventid numid tagVal greaterThan greaterEqThan lessThan lessEqThan equalTo typeCol vCheck activeid getVal
28 18 9000001 NULL NULL NULL 105 NULL NULL 3 0 68 92.907
9 19 9000001 NULL NULL NULL 105 NULL NULL 3 0 68 92.907
10 20 9000001 NULL 105 NULL NULL NULL NULL 1 1 68 92.907
腳本
DECLARE @nID nvarchar(50)
SET @nID = '9000001'
SELECT
g.groupid,
g.eventid,
g.numid,
g.tagVal,
g.greaterThan,
g.greaterEqThan,
g.lessThan,
g.lessEqThan,
g.equalTo,
g.typeCol,
vCheck =
CASE
WHEN g.typecol = 0 THEN CASE
WHEN g.getVal = g.tagval THEN 0
ELSE 1
END
WHEN g.typecol = 1 THEN CASE
WHEN g.getVal > g.greaterthan THEN 0
ELSE 1
END
WHEN g.typecol = 2 THEN CASE
WHEN g.getVal >= g.greatereqthan THEN 0
ELSE 1
END
WHEN g.typecol = 3 THEN CASE
WHEN g.getVal < g.lessthan THEN 0
ELSE 1
END
WHEN g.typecol = 4 THEN CASE
WHEN g.getVal <= g.lesseqthan THEN 0
ELSE 1
END
WHEN g.typecol = 5 THEN CASE
WHEN g.getVal = g.equalto THEN 0
ELSE 1
END
ELSE 0
END,
g.activeid,
g.getVal
FROM subobjgroup g
WHERE numid = @nID
您許多需要使用'ISNULL(VAL1,VAL2)'或'聚結,處理空比較好(VAL1,VAL2)' – xQbert