首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

100分,求sql话语,带选择条件

2013-06-19 
100分,求sql语句,带选择条件如下:表名: A字段名:ID,classID,a_isPass,b_isPass,c_isPass现在要查询条件是

100分,求sql语句,带选择条件
如下:
表名: A
字段名:ID,classID,a_isPass,b_isPass,c_isPass;
现在要查询条件是:当classID = 1时 a_isPass =1,当当classID = 2时 b_isPass =1,当classID = 3时 c_isPass =1
请求解。谢谢。
答案同1楼,这分也太容易挣了吧
[解决办法]
exec sp_executesql
动态执行sql语句。
自定义你的sql以及的条件
[解决办法]

引用:
用case when then的呢?

lz对于case when 不熟悉吗? case when 也比较简单
[解决办法]
select ID,classID,a_isPass,b_isPass,c_isPass from A where classID in(1,2,3) and a_isPass=1

[解决办法]
case when then 只能用操作classid的字段呀,不能从这个字段到另一个字段吧。。。
[解决办法]
感觉不是查询是修改
[解决办法]
update a
set a_isPass =
(case when classid = 1 then 1 else 0 end),
b_isPass =
(case when classid = 2 then 1 else 0 end),
c_isPass =
(case when classid = 3 then 1 else 0 end)
[解决办法]
樓主是要這個麼
SELECT
ID,
CLASSID,
(CASE CLASSID=1 THEN 1 ELSE A_ISPASS END) AS A_ISPASS,
(CASE CLASSID=2 THEN 1 ELSE B_ISPASS END) AS B_ISPASS,
(CASE CLASSID=3 THEN 1 ELSE C_ISPASS END) AS C_ISPASS

[解决办法]
/*--测试数据 BY Flyinsky1
create table #tb(tID int,
classID int,
a_isPass int,
b_isPass int,
c_isPass int)

insert into #tb 
select 1,1,1,0,0
union all 
select 2,2,0,1,0 
union all 
select 3,3,0,1,1
union all 
select 4,2,1,1,0
*/
--解法1
select tID,classID,'pass'=case when classid=1 and a_ispass=1 then 'a_ispass'
when classid=2 and b_ispass=1 then 'b_ispass'
when classid=3 and c_ispass=1 then 'c_ispass'else '' end
from #tb
--解法2


select tID,ClassID =case when classID=1 then 1 when classID=2 then 2
when classID=3 then 3 else 0 end,
   a_ispass = case when a_ispass=1 then 1 else 0 end,
   b_ispass=case when b_ispass=1 then 1 else 0 end,
c_ispass=case when c_ispass=1 then 1 else 0 end
from #tb


[解决办法]

[解决办法]
描述不清楚飘过
[解决办法]
/*--测试数据 BY Flyinsky1*/
create table #tb(tID int,
classID int,
a_isPass int,
b_isPass int,
c_isPass int)
insert into #tb 
select 1,1,1,0,0
union all 
select 2,2,0,1,0 
union all 
select 3,3,0,1,1
union all 
select 4,2,1,1,0
---当classID = 1时 a_isPass =1,当当classID = 2时 b_isPass =1,当classID = 3时 c_isPass =1
Select tb.tID, tb.classID,tb.a_isPass,tb.b_isPass,tb.c_isPass
From (
Select *,(Case When classID = 1 And a_isPass = 1 Then 1 
 When  classID = 2 And b_isPass =1 then 2
 when  classID = 3 And c_isPass = 1then 3
 End
 )  as flag
From #tb) as tb
Where tb.flag In (1,2,3)
-------------------
11100
22010
33011
42110

看这样行不??

热点排行