34,837
社区成员




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 "
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 "
SELECT
A.NAME,
ISNULL(B.NUM,0) AS 销售单数量,
ISNULL(C.NUM,0) AS 采购单数量
FROM
Employee AS A
LEFT JOIN
(SELECT CreatedBy,COUNT(1) AS NUM FROM GoodsSell GROUP BY CreatedBy) AS B
ON
A.NAME=B.CreatedBy
LEFT JOIN
(SELECT CreatedBy,COUNT(1) AS NUM FROM GoodsBuy GROUP BY CreatedBy) AS C
ON
A.NAME=C.CreatedBy
试试这个select a.NAME 员工姓名 ,COUNT(DISTINCT b.num) 采购单数量,COUNT(DISTINCT c.num)销售单数量
from [Employee] a LEFT JOIN [GoodsBuy] b ON a.NAME=b.createdby
LEFT JOIN [GoodsSell] c ON a.NAME=c.createdby
GROUP BY a.NAME
----------------------------------------------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2014-01-14 16:44:01
-- Version:
-- Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
-- Dec 28 2012 20:23:12
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[Employee]
if object_id('[Employee]') is not null drop table [Employee]
go
create table [Employee]([id] int,[name] varchar(4))
insert [Employee]
select 1,'张三' union all
select 2,'李四' union all
select 3,'王五' union all
select 4,'赵六'
if object_id('[GoodsSell]') is not null drop table [GoodsSell]
go
create table [GoodsSell]([id] int,[Num] varchar(3),[CreatedBy] varchar(4))
insert [GoodsSell]
select 1,'X-1','张三' union all
select 2,'X-2','张三' union all
select 3,'X-3','张三' union all
select 4,'X-4','王五' union all
select 5,'X-5','李四' union all
select 6,'X-6','李四'
if object_id('[GoodsBuy]') is not null drop table [GoodsBuy]
go
create table [GoodsBuy]([id] int,[Num] varchar(3),[CreatedBy] varchar(4))
insert [GoodsBuy]
select 1,'B-1','张三' union all
select 2,'B-2','张三' union all
select 3,'B-3','张三' union all
select 4,'B-4','李四' union all
select 5,'B-5','李四' union all
select 6,'B-6','赵六'
--------------开始查询--------------------------
--select * from [GoodsBuy]
--select * from [GoodsSell]
select a.NAME 员工姓名 ,COUNT(DISTINCT b.num) 销售单数量,COUNT(DISTINCT c.num)采购单数量
from [Employee] a LEFT JOIN [GoodsBuy] b ON a.NAME=b.createdby
LEFT JOIN [GoodsSell] c ON a.NAME=c.createdby
GROUP BY a.NAME
----------------结果----------------------------
/*
员工姓名 销售单数量 采购单数量
---- ----------- -----------
李四 2 2
王五 0 1
张三 3 3
赵六 1 0
*/