定义一个游标,@temp是外部参数                          declare YB1 CURSOR FOR 
                          select count(tjs6600),tjs6605,convert(varchar(100),@temp,23)
                          from tjs66
                          LEFT OUTER JOIN TRS14 ON TRS1400=TJS6605
                          left outer join tjs13 on tjs1300=tjs6602
                          where ( @temp<tjs6604 and tjs6613<dateadd(dd,1,@temp) and tjs6613 is not null ) or
                                ( @temp<tjs6604 and tjs6613 is null and tjs1319='G' and tjs6614<>6 ) or
                                ( tjs6604<@temp and tjs6613<dateadd(dd,1,@temp) and tjs6612 is not null) or
                                ( tjs6604<@temp and tjs6613 is null and tjs1319='G' and tjs6614<>6 )                          group by tjs6605,convert(varchar(100),@temp,23)    ----问题在这
运行时出现“每个 GROUP BY 表达式都必须包含至少一个列引用”的问题,经查得知是GROUP BY不能引用外部参数,但不使用该参数无法分组,请问如何解决?

解决方案 »

  1.   


     EXEC
     ('
      declare YB1 CURSOR FOR 
      select count(tjs6600),tjs6605,convert(varchar(100),'''+@temp+''',23)
      from tjs66
      LEFT OUTER JOIN TRS14 ON TRS1400=TJS6605
      left outer join tjs13 on tjs1300=tjs6602
      where (@temp<tjs6604 and tjs6613<dateadd(dd,1,'''+@temp+''') and tjs6613 is not null ) or
    ('''+ @temp+'''<tjs6604 and tjs6613 is null and tjs1319=''G'' and tjs6614<>6 ) or
     ( tjs6604<'''+@temp+''' and tjs6613<dateadd(dd,1,'''+@temp+''') and tjs6612 is not null) or
     ( tjs6604<'''+@temp+''' and tjs6613 is null and tjs1319=''G'' and tjs6614<>6 )
      group by tjs6605,convert(varchar(100),'''+@temp+''',23)
      ')改成这样吗?