tableC
Id state flag createtime updatetime1 deletetime updatetime3
1 创建 无 2011-07-07 无 无 无
1 删除 无 无 无 2011-08-07 无
1 更新 1 无 2011-08-13 无 无
1 更新 3 无 无 无 2011-08-08
3 创建 无 2011-07-07 无 无 无
3 删除 无 无 无 2011-08-07 无
我想实现这样一个效果,只要Id=1的情况
Id state dealtime(处理时间)
1 创建 2011-07-07
1 删除 2011-08-07
1 更新 2011-08-13
1 更新 2011-08-08
请问这样一句case when语句应该怎么写?
或者有比case when语句更方便的方法?
------解决方案--------------------
- SQL code
create table tb(Id int,state nvarchar(10),flag nvarchar(10),createtime datetime,updatetime1 datetime,deletetime datetime,updatetime3 datetime) insert into tb select 1,'创建','无','2011-07-07','2011-03-03','2011-03-04','2011-03-05'insert into tb select 1,'删除','无','2011-03-06','2011-03-07','2011-08-07','2011-04-02'insert into tb select 1,'更新','1','2011-04-03','2011-08-13','2011-04-04','2011-04-07'insert into tb select 1,'更新','3','2011-04-08','2011-04-10','2011-04-11','2011-08-08' insert into tb select 3,'创建','无','2011-07-07','2011-03-03','2011-03-04','2011-03-05'insert into tb select 3,'删除','无','2011-03-06','2011-03-07','2011-08-07','2011-04-02'goselect id,state,(case when state='创建' then createtime when state='删除' then deletetime when state='更新' and flag=1 then updatetime1 when state='更新' and flag=3 then updatetime3 end) as dealtimefrom tbwhere id=1/*id state dealtime----------- ---------- -----------------------1 创建 2011-07-07 00:00:00.0001 删除 2011-08-07 00:00:00.0001 更新 2011-08-13 00:00:00.0001 更新 2011-08-08 00:00:00.000(4 行受影响)*/godrop table tb