表 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 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
解决方案 »
- 这个webform应该怎样设计?
- 基础小问题,.NET内部类的隐式转换是怎么进行的.可逆吗?
- IIS日志导致硬盘空间不足,空间不足又导致网站运行错误怎么解决?
- repeater嵌套的问题
- 疑惑,请指教为何该程序下按钮事件下的Reponse.Redirect("WebForm2.aspx")没有效果?
- 1000分,求一个标准的asp.net的企业级三层或多层结构系统
- 获得最新页面的讨论
- 指定的转换无效??datagrid 按更新按钮出错
- 请问怎么把dataset的列名取出来
- 请问MVC3 LINQ TO EF 一次性删除表里多行记录怎么做呀?
- 如何动态生成check并修改id跟取值?
- 问一个触发器的问题
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
(
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
分数当然没有问题,大部分是你的了。同时也谢谢大家。
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"这样的来判断
我需要的结果是
字段 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 条件
-----------------------------------
(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 条件
-----------------------------------