表 FLID varchar(24)
A       varchar(24) 组织
B varchar(24) 项目
C varchar(24) 税局
D datetime 计税期间
E int         检查性质 0代表 好  1代表 坏
F datetime 检查时间
G decimal(18, 2) 应补税金
H decimal(18, 2) 应交滞纳金
J decimal(18, 2) 应交罚款
K decimal(18, 2) 缴款合计-- 存储过程  只能从外面接受这几个值
ALTER PROCEDURE [dbo].[tax]
@CompanyID VARCHAR(50),//组织A ID
@YEAR INT,--开始年
        @MONTH INT,-- 开始月份
@YEAR INT,--结束年
        @MONTH INT--结束月份
AS问题就是我需要根据 开始的年月结束年月这个区间 也许是12个月  也许是从去年都今年  查出每一月的 G H J K 金额的汇总  其中还要区分 性质的好  坏  求大虾帮忙

解决方案 »

  1.   

    CREATE PROCEDURE [dbo].[tax]
    @CompanyID VARCHAR(50),--组织A ID
    @YEAR1 INT,--开始年
      @MONTH1 INT,-- 开始月份
    @YEAR2 INT,--结束年
      @MONTH2 INT--结束月份
    AS
    BEGIN
      SELECT E,SUM(G) AS G,SUM(H) AS H,SUM(J) AS J,SUM(K) AS K
      FROM 表
      WHERE A=@CompanyID 
      AND CONVERT(VARCHAR(7),F,120)>=LTRIM(@YEAR1)+RIGHT('00'+LTRIM(@MONTH1),2)
      AND CONVERT(VARCHAR(7),F,120)<=LTRIM(@YEAR2)+RIGHT('00'+LTRIM(@MONTH2),2)
      GROUP BY E
    END
    GO
      

  2.   

    改一下日期格式
    CREATE PROCEDURE [dbo].[tax]
    @CompanyID VARCHAR(50),--组织A ID
    @YEAR1 INT,--开始年
      @MONTH1 INT,-- 开始月份
    @YEAR2 INT,--结束年
      @MONTH2 INT--结束月份
    AS
    BEGIN
      SELECT E,SUM(G) AS G,SUM(H) AS H,SUM(J) AS J,SUM(K) AS K
      FROM 表
      WHERE A=@CompanyID 
      AND CONVERT(VARCHAR(6),F,112)>=LTRIM(@YEAR1)+RIGHT('00'+LTRIM(@MONTH1),2)
      AND CONVERT(VARCHAR(6),F,112)<=LTRIM(@YEAR2)+RIGHT('00'+LTRIM(@MONTH2),2)
      GROUP BY E
    END
    GO
      

  3.   


    CREATE PROCEDURE [dbo].[tax]
        (
          @CompanyID VARCHAR(50) ,--组织A ID
          @bYEAR INT ,--开始年
          @bMONTH INT ,-- 开始月份
          @eYEAR INT ,--结束年
          @eMONTH INT--结束月份
        )
    AS 
        BEGIN        SELECT  CONVERT(VARCHAR(7), D, 120) ,
                    E ,
                    SUM(G) AS G ,
                    SUM(H) AS H ,
                    SUM(J) AS J ,
                    SUM(K) AS K
            FROM    FLID
            WHERE   A = @CompanyID
                    AND CONVERT(VARCHAR(7), D, 120) BETWEEN LTRIM(@bYEAR) + '-'
                                                            + RIGHT('00'
                                                                  + LTRIM(@bMONTH),
                                                                  2)
                                                    AND     LTRIM(@eYEAR) + '-'
                                                            + RIGHT('00'
                                                                  + LTRIM(@eMONTH),
                                                                  2)
            GROUP BY CONVERT(VARCHAR(7), D, 120) ,
                    E    END
      

  4.   


    CREATE PROCEDURE [dbo].[tax]
        (
          @CompanyID VARCHAR(50) ,--组织A ID
          @bYEAR INT , --开始年
          @bMONTH INT ,-- 开始月份
          @eYEAR INT , --结束年
          @eMONTH INT  --结束月份
        )
    AS 
        BEGIN
        --计税期间 和 检查时间 哪个是用来统计的时间依据?
            SELECT  CONVERT(VARCHAR(7), D, 120) ,
                    E ,SUM(G) AS G ,SUM(H) AS H ,SUM(J) AS J ,SUM(K) AS K
            FROM    FLID
            WHERE   A = @CompanyID
                    AND CONVERT(VARCHAR(7), D, 120) 
                    BETWEEN LTRIM(@bYEAR) + '-'+ RIGHT('00'+ LTRIM(@bMONTH),2)
                    AND     LTRIM(@eYEAR) + '-'+ RIGHT('00'+ LTRIM(@eMONTH), 2)
            GROUP BY CONVERT(VARCHAR(7), D, 120) ,E
        END
      

  5.   

    CREATE PROCEDURE [dbo].[tax]
    @CompanyID VARCHAR(50),--组织A ID
    @YEAR1 INT,--开始年
      @MONTH1 INT,-- 开始月份
    @YEAR2 INT,--结束年
      @MONTH2 INT--结束月份
    AS
    BEGIN
      SELECT E,SUM(G) AS G,SUM(H) AS H,SUM(J) AS J,SUM(K) AS K
      FROM 表
      WHERE A=@CompanyID 
      AND CONVERT(VARCHAR(6),D,112)>=LTRIM(@YEAR1)+RIGHT('00'+LTRIM(@MONTH1),2)
      AND CONVERT(VARCHAR(6),D,112)<=LTRIM(@YEAR2)+RIGHT('00'+LTRIM(@MONTH2),2)
      GROUP BY E
    END
    GO
      

  6.   


    树哥  把你的引进去  报错group by 无效
      

  7.   

    BEGINDECLARE @START DATETIME,
    @OVER DATETIME
    SET @START= @YEAR + '-' + @MONTH + '01'
    SET @OVER = @ENDYEAR + '-' + @ENDMONTH + '31'
    SELECT A,E,D,SUM(G),SUM(H),SUM(J),SUM(K) FROM 
    (
    SELECT A,E,D,G,H,J,K FROM TABLETAX WHERE A=@CompanyID AND D BETWEEN @START AND @OVER
    ) AS TABLE2 GROUP BY A,E,D
    END你那个group by 无效   把E去掉就可以  可能是聚合与非聚合报错