表 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 金额的汇总 其中还要区分 性质的好 坏 求大虾帮忙
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 金额的汇总 其中还要区分 性质的好 坏 求大虾帮忙
解决方案 »
- 求一简单sql 语句。 在线等
- 如何权衡编码的容易程度和数据库设计的关系?
- 正则匹配最大相同字符串求助
- 求sql定时发送数据存储过程的写法,在线等,谢谢!
- sql 的命令和存储过程的参考手册在哪里有下载?
- 求一个SQL语句,主从表查询,怎么通过子表计算主表的某个字段值。
- ******SQL 分组 取指定条数的数据
- 顾客最喜欢买哪类商品,这条SQL语句如何写呢?
- 为什么改用表变量后存储在SQL中正确执行,在应用程中却收不到返回集了?
- SQL2K库里有没有似于oracle的rowid的东东?
- 求助,两张表建立了主外键关系后约束录入数据是怎么回事?
- SQL语句怎样去除重复、并且保留XX较小的一条数据?(在线等)
@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
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
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
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
@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
树哥 把你的引进去 报错group by 无效
@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去掉就可以 可能是聚合与非聚合报错