首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求好手:一个根据大小对比修改数据的存储过程

2012-12-23 
求高手:一个根据大小对比修改数据的存储过程一、表结构CREATE TABLE [dbo].[Table_tc]([zyno] [varchar](20

求高手:一个根据大小对比修改数据的存储过程
一、表结构

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)

[其他解释]
oh,god.写错了,2楼的。多了两个set 。 继续头晕中!
[其他解释]
to:AcHerat
  哈哈哈哈。抢分心切啊~可以理解。
[其他解释]
感谢各位!

热点排行
Bad Request.