34,593
社区成员
发帖
与我相关
我的任务
分享
UPDATE dbo.TB
SET total =CASE WHEN in_date1 IS NULL THEN 0 ELSE tot END
+CASE WHEN in_date2 IS NULL THEN 0 ELSE tot END
+CASE WHEN in_date3 IS NULL THEN 0 ELSE tot END
-CASE WHEN out_date1 IS NULL THEN 0 ELSE tot END
-CASE WHEN out_date2 IS NULL THEN 0 ELSE tot END
-CASE WHEN out_date3 IS NULL THEN 0 ELSE tot END
SELECT * FROM dbo.TB
if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (tot int,in_date1 datetime,in_date2 datetime,in_date3 sql_variant,out_date1 datetime,out_date2 sql_variant,out_date3 sql_variant,total sql_variant)
insert into [TB]
select 10,null,'2012-10-11',null,null,null,null,null union all
select 20,'2012-09-15','2012-10-21',null,'2012-10-20',null,null,null union all
select 30,null,'2012-10-23',null,null,null,null,null
select * from [TB]
SELECT *,Newtotal =
CASE WHEN in_date1 IS NULL THEN 0 ELSE tot END
+CASE WHEN in_date2 IS NULL THEN 0 ELSE tot END
+CASE WHEN in_date3 IS NULL THEN 0 ELSE tot END
-CASE WHEN out_date1 IS NULL THEN 0 ELSE tot END
-CASE WHEN out_date2 IS NULL THEN 0 ELSE tot END
-CASE WHEN out_date3 IS NULL THEN 0 ELSE tot END
FROM dbo.TB
/*
tot in_date1 in_date2 in_date3 out_date1 out_date2 out_date3 total Newtotal
----------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -----------
10 NULL 2012-10-11 00:00:00.000 NULL NULL NULL NULL NULL 10
20 2012-09-15 00:00:00.000 2012-10-21 00:00:00.000 NULL 2012-10-20 00:00:00.000 NULL NULL NULL 20
30 NULL 2012-10-23 00:00:00.000 NULL NULL NULL NULL NULL 30
(3 行受影响)
*/