有三个表 A 有工号p,姓名n,日期date,部门d,形体no,产量num每日工资wage 表A存放员工每日产量,并有一个初始的工资
表B有工号,姓名,日期,部门存放每日汇总后的工资(同工号同日期会有不同的形体即表A会有多条纪录,星期六按双倍算),现在要查询一定日期范围的产量和工资,
例如:
A班 20080101 001 张三 100只 30 60
A班 20080102 001 张三 80只 25 25
A班 20080103 001 张三 75只 24 24
合计:109
SELECT A.P,A.N,A.DATE,A.D,A.WAGE,B.合计 FROM A LEFT OUTER JOIN
(SELCET P,D,DATE,SUM(WAGE) AS 合计 FROM B WHERE DATE BETWEEN 0101 AND 0103 GROUP BY P,D,DATE ) B ON A.P=B.P AND A.D=B.D
当查询的日期范围很大的时候,查询就会很慢 要得出合计的工资,左联接的B表有没有什么方法可以改善下 提高运算速度?
表B有工号,姓名,日期,部门存放每日汇总后的工资(同工号同日期会有不同的形体即表A会有多条纪录,星期六按双倍算),现在要查询一定日期范围的产量和工资,
例如:
A班 20080101 001 张三 100只 30 60
A班 20080102 001 张三 80只 25 25
A班 20080103 001 张三 75只 24 24
合计:109
SELECT A.P,A.N,A.DATE,A.D,A.WAGE,B.合计 FROM A LEFT OUTER JOIN
(SELCET P,D,DATE,SUM(WAGE) AS 合计 FROM B WHERE DATE BETWEEN 0101 AND 0103 GROUP BY P,D,DATE ) B ON A.P=B.P AND A.D=B.D
当查询的日期范围很大的时候,查询就会很慢 要得出合计的工资,左联接的B表有没有什么方法可以改善下 提高运算速度?
解决方案 »
- 一个sql语句
- 关于几个SQL查询语句
- <!-- -- -- 为什么字串字段用varchar者多,而鲜见有用nvarchar的? -- -- -->
- 子查询为空记录时的查询结果
- T-SQL的IF語句如何使用
- 重復記錄:在某一段時間內多次刷卡只算一次
- 变量 值 传递的问题
- 如何实现同时对时间,年份机型比较?---在线等待。
- 当TDatabase连接SQL Server出错时,如何弹出定制的消息框???
- MS_SQL 2000怎样用sql语句查询索引、主键、唯一约束
- Microsoft SQL Server 2005 安装程序出错!
- 98SE系统重新安装过,也不行(98SE是以前备份在硬盘上的)IE最近也在网上DOWN了,重新安装了还是出现同样的问题,实在不知所措了!
/*等同于下*/
SELECT A.P,A.N,A.[DATE],A.D,A.WAGE,SUM(B.WAGE) AS 合计
FROM A LEFT OUTER JOIN B ON A.P=B.P AND A.D=B.D
WHERE B.[DATE] BETWEEN 0101 AND 0103
GROUP BY A.P,A.N,A.[DATE],A.D,A.WAGE,B.P,B.D,B.[DATE]
合計的結果就不是0101 and 0103 之間的總和了 合计
A班 20080101 001 张三 100只 30 60 109
A班 20080102 001 张三 80只 25 25 109
A班 20080103 001 张三 75只 24 24 109
合计:109
A班 20080102 001 张三 80只 25 25 25
A班 20080103 001 张三 75只 24 24 24
我想要的是:
A班 20080101 001 张三 100只 30 60 109
A班 20080102 001 张三 80只 25 25 109
A班 20080103 001 张三 75只 24 24 109