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时,Comment列应为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
请分享您的建议。
谢谢
你看起来很好。插入一些与查询中给出的条件匹配的正确数据。请检查一下 -
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
/*------------------------
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)
您的第一个案例检查[TRUEMAR] <0.10并且没有满足条件的记录。
第二种情况检查[TRUEMAR]> 0.10 AND BRANMAR <0.10。所以,即使有记录满足[TRUEMAR]> 0.10,他们也不会通过BRANMAR的第二个条件
这就是为什么你的条件都失败并且你得到了默认值
如果您更改第二种情况,它将为您提供PMR的价值
UPDATE @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
但由于这不是你的要求,你得到的结果是正确的。请确保您的输入值正确无误
这样你的输入数据就可以得到那个结果。
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