Tsql 除零误差唯一零
我有下表:Tsql 除零误差唯一零,tsql,Tsql,我有下表: Item Ordqty Total_Costprice TotalSaleprice onhand Markup ENG-MAN-0102 3852 203.34 2494 73.992 SPG-P-018 2716 1232.80 473.2232 A8 8.62 9.335
Item Ordqty Total_Costprice TotalSaleprice onhand Markup
ENG-MAN-0102 3852 203.34 2494 73.992
SPG-P-018 2716 1232.80 473.2232
A8 8.62 9.335 0.71
A136 1621 148.35 518 0.3777
LA 1228 7.68 14.897 7.217
ENG-DOR 1039 34.94 50.8166 15.8766
A13-00-S 968 153.64 107 0.9997
代码是
SELECT
total_costprice,
markup,
CASE WHEN markup=0 THEN 0 ELSE 100*(markup)/costprice AS pctmarkup`
这将产生一个除以零的误差。我需要显示标记值的百分比标记。您需要使用函数
基于你的价值观,这将起作用。我在没有任何数据的地方插入了0-我不知道这是否属实
declare @myt table (item nvarchar(50),ordqty int, total_costprice numeric(18,4),totalsalesprice numeric(18,4),onhand numeric(18,4),markup numeric(18,4)
)
insert into @myt
values
('ENG-MAN-0102', 0 , 3852 , 203.34 , 2494 , 73.992 ),
('SPG-P-018' , 0 , 2716 , 1232.80 , 473.2232 , 0 ),
('A8' , 0 , 8.62 , 9.335 , 0 , 0.71 ),
('A136' , 0 , 1621 , 148.35 , 518 , 0.3777 ),
('LA' , 1228 , 7.68 , 14.897 , 0 , 7.217 ),
('ENG-DOR' , 1039 , 34.94 , 50.8166 , 0 , 15.8766 ),
('A13-00-S' , 968 , 153.64 , 107 , 0 , 0.9997 )
select * ,CASE WHEN markup=0 THEN 0 ELSE 100*(markup)/total_costprice end as Pct from @myt
结果
在得到被0除的错误之前,该代码会出现语法错误。您想在除法之前检查分母是否为0,而不是分子<代码>costprice=0时的情况,然后是0其他代码>当你没有任何值时你会怎么做?
costprice
或total\u costprice
?关于你的语法错误,你需要一个END
来结束你的案例陈述。我还要修改你的百分比公式,把除法放在括号里,而不仅仅是分子<代码>100*(加价/成本价)谢谢@Cool\u Br33ze工作正常
declare @myt table (item nvarchar(50),ordqty int, total_costprice numeric(18,4),totalsalesprice numeric(18,4),onhand numeric(18,4),markup numeric(18,4)
)
insert into @myt
values
('ENG-MAN-0102', 0 , 3852 , 203.34 , 2494 , 73.992 ),
('SPG-P-018' , 0 , 2716 , 1232.80 , 473.2232 , 0 ),
('A8' , 0 , 8.62 , 9.335 , 0 , 0.71 ),
('A136' , 0 , 1621 , 148.35 , 518 , 0.3777 ),
('LA' , 1228 , 7.68 , 14.897 , 0 , 7.217 ),
('ENG-DOR' , 1039 , 34.94 , 50.8166 , 0 , 15.8766 ),
('A13-00-S' , 968 , 153.64 , 107 , 0 , 0.9997 )
select * ,CASE WHEN markup=0 THEN 0 ELSE 100*(markup)/total_costprice end as Pct from @myt