表 T1字段 f1  f2  f3  hzfiled
记录 1    0   1
     1    1   0
     0    0   1
我需要的结果是
字段 f1  f2  f3  hzfiled
记录 1    0   1     ac
     1    1   0     ab
     0    0   1     c 
我怎么用语句来实现呢。
如果f1 字段 记录值 为 1  则hzfield  中 加a
如果f2 字段 记录值 为 1  则hzfield  中 加b
如果f3 字段 记录值 为 1  则hzfield  中 加c

解决方案 »

  1.   

    就是把所有字段都 case 一下吧
      

  2.   


    create table #
    (
      f1 int,
      f2 int,
      f3 int,
      hzfiled varchar(10)  
    )insert into # select 1,0,1,NULL
    union 
    select 1,1,0,NULL
    union
    select 0,0,1,NULLupdate # set hzfiled=(case when f1=1 then 'a' else '' end) + (case when f2=1 then 'b' else '' end) + (case when f3=1 then 'c' else '' end)select * from #f1      f2      f3      hzfiled
    0 0 1 c
    1 0 1 ac
    1 1 0 ab
      

  3.   

    可以的  用SQL语句就可以了
      

  4.   

    create table tryMyself
    (
     id int identity(1,1),
     F1int,
     F2int,
     F3int
    )insert into tryMyself select 1,0,1,NULL
    union 
    select 1,1,0,NULL
    union
    select 0,0,1,NULLSELECT F1,F2,F3,(
    (CASE WHEN F1=1 THEN 'A' ELSE '' END )+(CASE WHEN F2=1 THEN 'B' ELSE '' END )+
    (CASE WHEN F3=1 THEN 'C' ELSE '' END ))  FROM TRYMYSELF
      

  5.   

    yangpeiyu 
    分数当然没有问题,大部分是你的了。同时也谢谢大家。
      

  6.   

    update T1 set hzfiled=null --先清空一下
    update T1 set hzfiled='a' where f1 = 'true'
    update T1 set hzfiled=hzfiled+'b' where f2 = 'true' and hzfiled is not null
    update T1 set hzfiled='b' where f2 = 'true' and hzfiled is null
    update T1 set hzfiled=hzfiled+'c' where f3 = 'true' and hzfiled is not null
    update T1 set hzfiled='c' where f3 = 'true' and hzfiled is null--如果f1,f2,f3用的bit列就用='true'来判断,如果是int列就用"=1"和"=0"这样的来判断
      

  7.   

    -----------------------------------
    我需要的结果是 
    字段 f1  f2  f3  hzfiled 
    记录 1    0   1     ac 
         1    1   0     ab 
         0    0   1     c 
    -----------------------------------——语句如下:
    UPDATE 表名
    SET hzfiled = 
         (CASE f1 WHEN 1 THEN 'a' ELSE '' END) 
       + (CASE f2 WHEN 1 THEN 'b' ELSE '' END) 
       + (CASE f3 WHEN 1 THEN 'c' ELSE '' END) 
    WHERE 条件
    -----------------------------------
      

  8.   

    另一种方法,设计“hzfile”为公式列,其公式内容为:
    (CASE f1 WHEN 1 THEN 'a' ELSE '' END)  
       + (CASE f2 WHEN 1 THEN 'b' ELSE '' END)  
       + (CASE f3 WHEN 1 THEN 'c' ELSE '' END)  
    -----------------------------------还有一种方法,不需该物理列,视图里加一列。
    SELECT *,
    (CASE f1 WHEN 1 THEN 'a' ELSE '' END)  
       + (CASE f2 WHEN 1 THEN 'b' ELSE '' END)  
       + (CASE f3 WHEN 1 THEN 'c' ELSE '' END)  AS  hzfile
    FROM 表 
    WHERE 条件
    -----------------------------------