DECLARE @TAB TABLE (SKU INT,
SP FLOAT,
STDC FLOAT,
REPC FLOAT,
TRUEMAR FLOAT,
BRANMAR FLOAT,
comment VARCHAR (100)
)
INSERT INTO @TAB
SELECT 40410, 24.34, 23.895, 19.91, 18.2, 1.83, NULL
UNION ALL
SELECT 40410, 25.61, 23.895, 19.91, 22.26, 6.7, NULL
UNION ALL
SELECT 40410, 24.95, 23.895, 19.91, 20.2, 44.23, NULL
UNION ALL
SELECT 40410, 25.29, 23.895, 19.91, 21.27, 5.52, NULL
当TRUEMAR小于0.10时,注释列应为UR
当TRUEMAR大于0.10且BARMAR小于0.10时,那么PMR
否则NA
不幸的是,以下代码将全部返回为NA。
UPDATE @TAB
SET Comment = CASE
WHEN [TRUEMAR] < 0.10 THEN 'UR'
WHEN [TRUEMAR] > 0.10 and BRANMAR < 0.10 THEN 'PMR'
ELSE 'NA'
END
请分享您的建议。
由于
答案 0 :(得分:0)
你看起来很好。插入一些与查询中给出的条件匹配的正确数据。请检查一下 -
DECLARE @TAB TABLE
(
SKU INT,
SP FLOAT,
STDC FLOAT,
REPC FLOAT,
TRUEMAR FLOAT,
BRANMAR FLOAT,
comment VARCHAR (100)
)
INSERT @TAB
SELECT 40410, 24.34, 23.895, 19.91, 18.2, 1.83,NULL UNION ALL
SELECT 40410, 25.61, 23.895, 19.91, 22.26, 6.7,NULL UNION ALL
SELECT 40410, 24.95, 23.895, 19.91, 20.2, 44.23,NULL UNION ALL
SELECT 40410, 25.29, 23.895, 19.91, 21.27, 5.52,NULL UNION ALL
SELECT 40410, 25.29, 23.895, 19.91, 21.27, 0.08,NULL
select * , CASE
WHEN [TRUEMAR] > 0.10 and BRANMAR <0.10 THEN 'PMR'
WHEN [TRUEMAR] < 0.10 THEN 'UR'
ELSE 'NA'
END
FROM @TAB
<强>输出强>
/*------------------------
OUTPUT
------------------------*/
(5 row(s) affected)
SKU SP STDC REPC TRUEMAR BRANMAR comment
----------- ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ------------- ----
40410 24.34 23.895 19.91 18.2 1.83 NULL NA
40410 25.61 23.895 19.91 22.26 6.7 NULL NA
40410 24.95 23.895 19.91 20.2 44.23 NULL NA
40410 25.29 23.895 19.91 21.27 5.52 NULL NA
40410 25.29 23.895 19.91 21.27 0.08 NULL PMR
(5 row(s) affected)
答案 1 :(得分:0)
您输入的数据就是这样,您可以获得该结果。
INSERT @TAB
SELECT 40410, 24.34, 23.895, 19.91, 0.09, 1.83,NULL UNION ALL
SELECT 40410, 25.61, 23.895, 19.91, 0.11, 0.09,NULL UNION ALL
SELECT 40410, 24.95, 23.895, 19.91, 20.2, 44.23,NULL UNION ALL
SELECT 40410, 25.29, 23.895, 19.91, 21.27, 5.52,NULL
答案 2 :(得分:0)
您的第一个案例检查[TRUEMAR]&lt; 0.10并且没有满足条件的记录。
第二种情况检查[TRUEMAR]&gt; 0.10 AND BRANMAR&lt; 0.10。即使有记录满足[TRUEMAR]&gt; 0.10他们不会通过BRANMAR的第二个条件
这就是为什么你的条件都失败并且你得到了默认值
如果您更改第二种情况
,它将为您提供值作为PMRUPDATE @TAB
SET Comment = CASE
WHEN ISNULL([TRUEMAR],0.00) < 0.10 THEN 'UR'
WHEN ISNULL([TRUEMAR],0.00) > 0.10 OR BRANMAR < 0.10 THEN 'PMR'
ELSE 'NA'
END
但由于这不是你的要求,你得到的结果是正确的。请确保您的输入值正确