表A: 部门编号                部门名称 
DepartID varchar(100) DepartName varchar(50) 
A       最高级主管部门 
A01       人力资源部 
A02       财务部 
A03       制造部 
A0301       装配一车间 
A0302       装配二车间 
A04       销售部 。。 表B: 
    部门编号           员工编号            卡号                  员工姓名 
    DepartID(nvarchar)50  EmpID(nvarchar)50  CardNO(nvarchar)12  EmpName nvarchar 50 
A01             HR3002       8671050         AAA 
A01             HR3003       4348980         BBB 
A0301             MA0301       8876015         CCC 
A02             FA001                 8681050         DDD 
        A0302                MA0302                88001060            EEE 
 
表C: 
DepartID nvarchar 50   部门编号 
EmpID nvarchar 30   员工编号 
MorningCount smallint 2  早餐次数 
AfternoonCount smallint 2  午餐次数 
EveningCount smallint 2  晚餐次数 
OtherCount smallint 2  其他餐次数 记录: 
A01 HR3002 4 8 3 5 
A01 HR3003 6 3 6 4 
A0301 MA0301 1 3 5 3 
A0302    MA0302  0        0        0        0 
A02 FA001 6 4 6 0 
 求一个SQL语句,查询结果为: 
部门编号,部门名称  早餐合计 午餐合计 晚餐合计 其他餐合计 
A        最高级部门  17      18      20      12 
A01      人力资源部    10      11      9        9 
A02      财务部        6        4      6        0 
A03      制造部        1        3      5        3 
A0301    装配一车间    1        3      3        3 
A0302    装配二车间    0        0      0        0 
A04      销售部      0          0      0        0 

解决方案 »

  1.   

    用联合查询,看一下SQL的里的精华贴,有类似的贴子。
      

  2.   


    select a.*,c.早餐合计,午餐合计,晚餐合计,其他餐合计 from a,
    (select departid,早餐合计=sum(MorningCount),午餐合计=sum(AfternoonCount),
    晚餐合计=sum(EveningCount),其他餐合计=sum(OtherCount) from c group by departid)c
    where a.departid=c.departid
      

  3.   

    select a.DepartID ,a.DepartName ,isnull(sum(MorningCount ),0),isnull(sum(AfternoonCount ),0),isnull(sum(EveningCount ),0),isnull(sum(OtherCount ),0)
    from ta a,left outer join tc c
    where
    a.DepartID = c.DepartID 
    group by a.DepartID ,a.DepartName 
      

  4.   

    USE DATABASE  databasename
    GO
    SELECT 表A.departmentID,表A. DepartName ,表C.MorningCount,表C.AfternoonCount,表C.eveningcount,表C.othercount
    FROM 表A,表C
    WHERE 表A.departmentID=表C.departmentID
    ORDER BY departmentID
    这的语句就不会了
    应该是个SUM函数,不过什么格式不倒是不知道
    GO
      

  5.   

    楼上回答的都不对,诸位可能都没有看清楚查询结果和要求,查询结果是包含各部门汇总的数据,其中下级部门的数据要汇总到上级部门内,如部门代码“A”则是包含所有“A01”,“A02”。的数据之和,“A01”则是所有“A0101” ”A0102“的数据之和,
      

  6.   

    根本就是错误的,连like语句都没有看到,统计出来的结果肯定是错误的
      

  7.   

    select T0.DepartID ,
    T0.DepartName, 
    T1.MorningCount,
    T1.AfternoonCount,
    T1.EveningCount,
    T1.OtherCount 
    from 表A T0 inner join 表C T1 on T1.DepartID like '%'+T1.DepartID+'%'穷赚点分,快结帖给分! 
      

  8.   


    select T0.DepartID , 
    T0.DepartName, 
    sum(isnull(T1.MorningCount,0))
    from 表A T0 inner join 表C T1 on T1.DepartID like '%'+T1.DepartID+'%' 
    T0.DepartID , 
    T0.DepartName, 
    刚刚写错了。不好意思.
    穷赚点分,快结帖给分! 
      

  9.   

    手忙叫乱打错了。汗!
    select T0.DepartID , 
    T0.DepartName, 
    sum(isnull(T1.MorningCount,0)) 
    from 表A T0 inner join 表C T1 on T1.DepartID like '%'+T0.DepartID+'%' 
    T0.DepartID , 
    T0.DepartName,