layxbjl 2014年01月14日
多表查询,分组合计的问题
表1 Employee
id name
1 张三
2 李四
3 王五
4 赵六
表2 GoodsSell 销售单
id Num CreatedBy
1 X-1 张三
2 X-2 张三
3 X-3 张三
4 X-4 王五
5 X-5 李四
6 X-6 李四

表3 GoodsBuy 采购单
id Num CreatedBy
1 B-1 张三
2 B-2 张三
3 B-3 张三
4 B-4 李四
5 B-5 李四
6 B-6 赵六

sql代码:
    SQL = "select Employee.Name as 员工姓名,count(GoodsSell.Num) as 销售单数量,count(GoodsBuy.Num) as 采购单数量 from Employee left join GoodsSell on Employee.Name=GoodsSell.CreatedBY and CONVERT(varchar(12),GoodsSell.createddate,111) between '" & dtpFromDate.Value & "' and '" & dtpToDate.Value & "' left join Goodsbuy on Employee.Name=Goodsbuy.CreatedBY and CONVERT(varchar(12),Goodsbuy.createddate,111) between '" & dtpFromDate.Value & "' and '" & dtpToDate.Value & "' where Employee.department<>'离职' Group by Employee.Name order by Employee.Name "


想得到的结果
员工姓名 销售单数量 采购单数量
张三 3 3
李四 2 2
王五 1 0
赵六 0 1


实际运行结果
员工姓名 销售单数量 采购单数量
张三 9 9
李四 4 4
王五 1 0
赵六 0 1


只要是销售和采购这边都有记录的,就会把两边的合计数量一乘然后分别赋给两边,如果只有一边有的则没有问题,如果只查两个表则都正常,如下:sql代码:
    SQL = "select Employee.Name as 员工姓名,count(GoodsSell.Num) as 销售单数量 from Employee left join GoodsSell on Employee.Name=GoodsSell.CreatedBY and CONVERT(varchar(12),GoodsSell.createddate,111) between '" & dtpFromDate.Value & "' and '" & dtpToDate.Value & "' where Employee.department<>'离职' Group by Employee.Name order by Employee.Name "

请问哪里有问题,目标是6个表以上的查询。谢谢

...全文
121 点赞 收藏 11
写回复
11 条回复

还没有回复,快来抢沙发~

发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告