create procedure p_ff
(
@year int,
@month int,
@id int
@s varchar(20)
)
as
begin
declare @ss varchar(4000)
select @ss='select Mark1+Mark2+Mark3+Mark4+Mark5+Mark6+Mark7+Mark8+Mark9+Mark10+Mark11+Mark12+Mark13+Mark14+Mark15+'+
'Mark16+Mark17+Mark18+Mark19+Mark20+Mark21+Mark22+Mark23+Mark24+Mark25+Mark26+Mark27+Mark28+Mark28+Mark30+Mark31'+
'from (SELECT Mark1= CASE Mark1 WHEN '''+@s+''' THEN 1 ELSE 0 end,'+
'Mark2 = CASE Mark2 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark3 = CASE Mark3 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark4 = CASE Mark4 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark5 = CASE Mark5 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark6 = CASE Mark6 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark7 = CASE Mark7 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark8 = CASE Mark8 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark9 = CASE Mark9 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark10 = CASE Mark10 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark11 = CASE Mark11 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark12 = CASE Mark12 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark13 = CASE Mark13 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark14 = CASE Mark14 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark15 = CASE Mark15 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark16 = CASE Mark16 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark17 = CASE Mark17 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark18 = CASE Mark18 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark19 = CASE Mark19 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark20 = CASE Mark20 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark21 = CASE Mark21 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark22 = CASE Mark22 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark23 = CASE Mark23 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark24 = CASE Mark24 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark25 = CASE Mark25 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark26 = CASE Mark26 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark27 = CASE Mark27 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark28 = CASE Mark28 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark29 = CASE Mark29 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark30 = CASE Mark30 WHEN '''+@s+''' THEN 1 ELSE 0 end,'
+'Mark31= CASE Mark31 WHEN '''+@s+''' THEN 1 ELSE 0 end '+
' FROM Work_Work where Years='+convert(varchar,@year)'
+' and Months='+convert(varchar,@month)'
+' and PersonnelID='+convert(varchar,@id)+') tt '
exec(@ss)
在陈辰的基础上加的,大致思路就是写个存储过程了,然后传四个参数,里面的引号肯定不对,你自己在调调吧.前三个不用说了,第四个就是字符串'加白','加夜'什么的,