tableCId   state   createtime    updatetime   deletetime
1    创建     2011-07-07
2    更新                  2011-08-07
3    删除                                2011-08-08我想实现这样一个效果
Id    state   dealtime(处理时间)
1     创建      2011-07-07
2     更新      2011-08-07
3     删除      2011-08-08
请问这样一句语句应该怎么写?

解决方案 »

  1.   

    tableCId state createtime updatetime deletetime
    1 创建     2011-07-07   无           无
    2 更新       无         2011-08-07   无
    3 删除       无            无       2011-08-08我想实现这样一个效果
    Id state dealtime(处理时间)
    1 创建 2011-07-07
    2 更新 2011-08-07
    3 删除 2011-08-08
    请问这样一句语句应该怎么写?
      

  2.   


    select id,state , (case when state='创建 ' then createtime when state='更新 ' then updatetime 
    else deletetime end) dealtime from tableC
      

  3.   

    --tableC--Id state createtime updatetime deletetime
    --1 创建   2011-07-07  无         无
    --2 更新     无       2011-08-07  无
    --3 删除     无        无         2011-08-08
    if OBJECT_ID('tb') is not null
    drop table tb
    go
    create table tb(Id int,[state] varchar(50),createtime varchar(50), updatetime varchar(50)
    , deletetime varchar(50))
    insert into tb values(1 ,'创建'  , '2011-07-07' , '无'    ,     '无')
    insert into tb values(2, '更新'  ,   '无'    ,   '2011-08-07',  '无')
    insert into tb values(3 ,'删除'  ,   '无'   ,     '无'       ,  '2011-08-08')
    --我想实现这样一个效果,
    --Id state dealtime(处理时间)
    --1 创建 2011-07-07
    --2 更新 2011-08-07
    --3 删除 2011-08-08
    select Id ,[state],case when createtime <>'无' then createtime
    else (case when updatetime <>'无' then  updatetime else deletetime end) end as 'dealtime(处理时间)'
     from tbId          state                                              dealtime(处理时间)
    ----------- -------------------------------------------------- --------------------------------------------------
    1           创建                                                 2011-07-07
    2           更新                                                 2011-08-07
    3           删除                                                 2011-08-08(3 行受影响)
      

  4.   

    create table tb(Id int,[state] varchar(50),createtime varchar(50), updatetime varchar(50), deletetime varchar(50))
    insert into tb values(1 ,'创建'  , '2011-07-07' , null    ,     null)
    insert into tb values(2, '更新'  ,  null    ,   '2011-08-07',  null)
    insert into tb values(3 ,'删除'  ,   null   ,     null       ,  '2011-08-08')
    go
    select id , state , COALESCE(createtime,updatetime,deletetime) dealtime from tbdrop table tb/*
    id          state                                              dealtime                                           
    ----------- -------------------------------------------------- -------------------------------------------------- 
    1           创建                                                 2011-07-07
    2           更新                                                 2011-08-07
    3           删除                                                 2011-08-08(所影响的行数为 3 行)
    */