62,046
社区成员
发帖
与我相关
我的任务
分享
create Proc Proc_GetName
@BoyPoint int,
@GirlPoint int
as
begin transaction
Declare @sql varchar(1024)
set @sql='elect name as 名单 where 1=1 '
if(@BoyPoint is not null)
begin
set @sql=@sql+'and sex=1 and grade>='+@BoyPoint
end
if(@GirlPoint is not null)
begin
set @sql=@sql='and sex=2 and grade>='+@GirlPoint
end
exec(@sql)
if @@error <>0
begin
rollback transaction
end
else
begin
commit transaction
end
declare @t table([id] int identity(1,1),[name] varchar(3),sex int,grade int)
insert @t([name],sex,grade) select 'aa',1,69
union all select 'aa2',2,69
union all select 'aa3',2,50
union all select 'aa4',1,89
union all select 'aa5',2,77
union all select 'aa6',1,75
union all select 'aa7',1,50
select * from @t
where grade>=60 or (sex=2 and grade>=50)
/*
(所影响的行数为 7 行)
id name sex grade
----------- ---- ----------- -----------
1 aa 1 69
2 aa2 2 69
3 aa3 2 50
4 aa4 1 89
5 aa5 2 77
6 aa6 1 75
(所影响的行数为 6 行)
*/
SELECT id,name,(CASE sex WHEN 1 THEN '男' ELSE '女' END),grade FROM Table WHERE Sex=1 AND grade>=60
UNION ALL
SELECT id,name,(CASE sex WHEN 1 THEN '男' ELSE '女' END),grade FROM Table WHERE Sex=2 AND grade>=50