求高手:一个根据大小对比修改数据的存储过程
一、表结构
CREATE TABLE [dbo].[Table_tc](
[zyno] [varchar](20) NULL,
[sa_qj] [varchar](50) NULL,
[sa_base] [decimal](18, 2) NULL,
[sa_float] [decimal](18, 2) NULL,
[sa_tc] [decimal](18, 2) NULL
) ON [PRIMARY]
二、测试值
insert into Table_tc(zyno,sa_qj,sa_base,sa_float,sa_tc) values('zy001','2012-08',2500,2400,99)
insert into Table_tc(zyno,sa_qj,sa_base,sa_float,sa_tc) values('zy002','2012-08',2000,2400,100)
三、用存储过程实现功能:
根据 sa_base > (sa_float + sa_tc) 大小对比。 根据对比结果清空sa_base,或(sa_float、sa_tc)
四、效果如下:
zy0012012-082500.0000
zy0022012-0802400.00100.00
[最优解释]
update tb
set sa_base = (case when sa_base > sa_float+sa_tc then sa_base else 0 end),
set sa_float = (case when sa_base > sa_float+sa_tc then 0 else sa_float end),
set sa_tc = (case when sa_base > sa_float+sa_tc then 0 else sa_tc end)
update Table_tc
set sa_base = (case when sa_base > sa_float+sa_tc then sa_base else 0 end),
sa_float = (case when sa_base > sa_float+sa_tc then 0 else sa_float end),
sa_tc = (case when sa_base > sa_float+sa_tc then 0 else sa_tc end)