求一个存储过程的写法。 
  有两张表: 
      表一:试题信息表(subjectinfo)  字段:subjectid[试题的ID],content[试题内容],state[试题状态0-待审核 1-未通过审核 2-已通过审核],date[试题的发布日期],name[试题的命题人] 
      表二:报名信息表(signinfo)  字段:ID(报名ID),subjectid[所选试题的ID],name[报名者姓名] 
        我想写一个关于命题教师查看他所命题的报名情况,如果有报名的就显示报名人数,如果没有报名人数就显示0,输入参数是@name[试题的命题人],查询结果是:试题内容,试题的发布日期,试题的状态,试题的报名人数 
  请问该怎么写这个存储过程啊?注意:state字段的取值有int型(0,1,2)  但是我想让查询结果显示汉字(待审核,未通过,已通过审核)

解决方案 »

  1.   

    create procedure proc(@name varchar(20))
    as 
    begin select A.content [试题内容],A.date [试题的发布日期], 试题的状态= case when A.state=0 then [待审核]
                                                                                                            when A.state=1 then [未通过审核] 
                                                                                                            when A.state=2 then [已通过审核]
                                                                                                     else '' end   ,B.cnt [试题的报名人数 ]
    from
       (select  A.content,A.date,A.state,B.name,A.subjectid
        from subjectinfo A left outer join signinfo B
       on(A.subjectid=B.subjectid )
      ) A,   (select  isnull(count(B.name),0) as cnt ,B.name,A.subjectid,
       from subjectinfo A left outer join signinfo B
       on(A.subjectid=B.subjectid )
      group by A.subjectid ,B.name
    ) B
    where A.subjectid=B.subjectid
      and  A.name=b.name
    end
    最好给几条测试数据