根据年月来取资料,表里有一个字段是日期,分别取出来匹配,该怎么写?
--------------------------------------------------------------------
这是我写的,不对
ALTER   PROCEDURE [DBO].[Prc_GetHomeWorkByMonth]
(
@GroupNO varchar(50),
@NowYear varchar(50),
@NowMonth varchar(50)
)
AS
select a.*,b.groupno,c.Title from  SchoolWork a right join SchoolWork_Access b on a.workid=b.workid left join AUTH_GROUP c on b.groupno =c.groupno 
where 
@NowYear in (select datepart(yy,InputDate) from schoolwork )
and
@NowMonth in  (select  datepart(m,InputDate) from schoolwork )
and 
b.groupno=@GroupNO 
ORDER BY a.Deadline  DESC

解决方案 »

  1.   

    ALTER   PROCEDURE [DBO].[Prc_GetHomeWorkByMonth]
    (
    @GroupNO varchar(50),
    @NowYear varchar(50),
    @NowMonth varchar(50)
    )
    AS
    exec('select a.*,b.groupno,c.Title from  SchoolWork a right join SchoolWork_Access b on a.workid=b.workid left join AUTH_GROUP c on b.groupno =c.groupno 
    where 
    '+@NowYear+' in (select datepart(yy,InputDate) from schoolwork )
    and
    '+@NowMonth+' in  (select  datepart(m,InputDate) from schoolwork )
    and 
    b.groupno='+@GroupNO+' 
    ORDER BY a.Deadline  DESC')
      

  2.   

    试试这样
    select a.*,b.groupno,c.Title from  SchoolWork a right join SchoolWork_Access b on a.workid=b.workid left join AUTH_GROUP c on b.groupno =c.groupno 
    where 
     datepart(yy,a.InputDate)=@NowYear
    and
     datepart(m,a.InputDate)=@NowMonth 
    and 
    b.groupno=@GroupNO 
      

  3.   

    --这样呢?
    ALTER   PROCEDURE [DBO].[Prc_GetHomeWorkByMonth]
    (
    @GroupNO varchar(50),
    @NowYear varchar(50),
    @NowMonth varchar(50)
    )
    AS
    Exec( 'select a.*,b.groupno,c.Title from  SchoolWork a right join SchoolWork_Access b on a.workid=b.workid left join AUTH_GROUP c on b.groupno =c.groupno 
    where 
    convert(varchar(6),a.InputDate)='''+@NowYear+''+@NowMonth+'''  and b.groupno='+@GroupNO+
    ' ORDER BY a.Deadline  DESC')
      

  4.   

    ALTER   PROCEDURE [DBO].[Prc_GetHomeWorkByMonth]
    (
    @GroupNO varchar(50),
    @NowYear varchar(50),
    @NowMonth varchar(50)
    )
    AS
    exec('select a.*,b.groupno,c.Title from  SchoolWork a right join SchoolWork_Access b on a.workid=b.workid left join AUTH_GROUP c on b.groupno =c.groupno 
    where 
    '+@NowYear+' in (select datepart(yy,InputDate) from schoolwork )
    and
    '+@NowMonth+' in  (select  datepart(m,InputDate) from schoolwork )
    and 
    b.groupno='''+@GroupNO+''' 
    ORDER BY a.Deadline  DESC')