我需要帮助,在现有的临时表更新我的专栏之一,每次的指标之一是> = 4SQL服务器:从表更新列,如果记录的一个> = X
下面是我的查询我正在努力:
DECLARE @Met NVARCHAR(MAX)
SET @Met = 'MET'
DECLARE @NotMet NVARCHAR(MAX)
SET @NotMet = 'NOT MET'
UPDATE #TmpTbl
SET Score_Oct = (CASE
WHEN ([Type] LIKE '%Metric%') AND CAST(Score_Oct AS INT) >= 4
THEN @NotMet
ELSE @Met
END),
Score_Nov = (CASE
WHEN ([Type] LIKE '%Metric%') AND CAST(Score_Nov AS INT) IN (4, 5, 6)
THEN @NotMet
ELSE @Met
END),
Score_Dec = (CASE
WHEN ([Type] LIKE '%Metric%') AND Score_Dec IN ('4', '5', '6')
THEN @NotMet
ELSE @Met
END),
Score_Jan = (CASE
WHEN ([Type] LIKE '%Metric%') AND Score_Jan IN ('4', '5', '6')
THEN @NotMet
ELSE @Met
END),
Score_Feb = (CASE
WHEN ([Type] LIKE '%Metric%') AND Score_Feb IN ('4', '5', '6')
THEN @NotMet
ELSE @Met
END)
,Score_Mar = (CASE WHEN ([Type] LIKE '%Metric%') AND Score_Mar IN ('4','5','6') THEN @NotMet ELSE @Met END)
,Score_Apr = (CASE WHEN ([Type] LIKE '%Metric%') AND Score_Apr IN ('4','5','6') THEN @NotMet ELSE @Met END)
,Score_May = (CASE WHEN ([Type] LIKE '%Metric%') AND Score_May IN ('4','5','6') THEN @NotMet ELSE @Met END)
,Score_Jun = (CASE WHEN ([Type] LIKE '%Metric%') AND Score_Jun IN ('4','5','6') THEN @NotMet ELSE @Met END)
,Score_Jul = (CASE WHEN ([Type] LIKE '%Metric%') AND Score_Jul IN ('4','5','6') THEN @NotMet ELSE @Met END)
,Score_Aug = (CASE WHEN ([Type] LIKE '%Metric%') AND Score_Aug IN ('4','5','6') THEN @NotMet ELSE @Met END)
,Score_Sep = (CASE WHEN ([Type] LIKE '%Metric%') AND Score_Sep IN ('4','5','6') THEN @NotMet ELSE @Met END)
WHERE
Metric = 'Balance Scorecard'
我一直在尝试不同的组合(铸造,治疗领域INT,文字等),但无济于事。有什么我错过了吗?
下面是结果集:
Metric Type Result_Oct Score_Oct Result_Nov Score_Nov
AA 1.Monthly Metric 3 3 NULL NULL
BB 1.Monthly Metric 292 3 300 3
CC 1.Monthly Metric 3 3 NULL NULL
DD 2.Half Yearly Metric 70 3 NULL NULL
EE 2.Half Yearly Metric 100 1 67 4
Balance Scorecard 3.Accountability NULL MET NULL MET
资产负债Scoredcard应该是“不符合”的“Score_nov”为EE度量> = 4,但它似乎是一个查询不能承认的数字。是否因为字段为空?
你能提供一些示例源数据? – iamdave