1. select * from 表
   union
   select [部门]+'合计','',sum([工资]) from 表 group by [部门]2.  update EMP
    set SALARY=1.1*A.SALARY
    from EMP A
    join DEPT B on A.DNO=B.DNo 
                and 
                B.DNAME='销售部'
    where A.SALARY<600

解决方案 »

  1.   

    1. 
       select *
       from
           (
             select * from 表
             union
             select [部门]+'合计','',sum([工资]) from 表 group by [部门]
           )t
       order by [部门]2.  update EMP
        set SALARY=1.1*A.SALARY
        from EMP A
        join DEPT B on A.DNO=B.DNo 
                    and 
                    B.DNAME='销售部'
        where A.SALARY<600
      

  2.   

    select *
       from
           (
             select * from EMP
             union
             select [DNO]+'合计','',sum([SALARY]) from EMP group by [DNO]
           )t
       order by [DNO]
    我是这样写的,可错误提示为:
    包含 UNION 运算符的查询表达式中的所有查询都必须在选择列表中包含同样数目的表达式。
      

  3.   

    update EMP
        set SALARY=1.1*A.SALARY
        from EMP A
        join DEPT B on A.DNO=B.DNO 
                    and 
                    B.DNAME='销售部'
        where A.SALARY<600
    第二题我这样写以后还是有错误,错误提示为:
    对象名 'DEPT' 无效。
      

  4.   

    declare @tb table
    (
      [部门] varchar(10),
      [员工] varchar(10),
      [工资] int
    )
    insert @tb
    select 'A','李',1000 union
    select 'B','王',2000 union
    select 'A','张',3000 union
    select 'B','赵',4000 --查询
    select *
    from
         (
           select * from @tb
           union
           select [部门]+'合计','',sum([工资]) from @tb group by [部门]
         )t
    order by [部门]--结果
    /*
    部门             员工         工资          
    -------------- ---------- ----------- 
    A              李          1000
    A              张          3000
    A合计                       4000
    B              王          2000
    B              赵          4000
    B合计                       6000(6 row(s) affected)
    */
      

  5.   

    对象名 'DEPT' 无效
    ===================>
    关系DEPT表(DNO,DNAME,MANAGER),其中各属性含义依次为部门号、部门名称、部门经理的职工号。
    什么意思?
      

  6.   

    第二题关系DEPT表(DNO,DNAME,MANAGER),其中各属性含义依次为部门号、部门名称、部门经理的职工号。
    我也不知道是什么意思。但我建了这样一个表:
    EMP表(ENO,ENAME,SALARY,DNO),其中各属性的含义依次为职工号、姓名、工资和所在部门号,并且给了相应的数据。请用SQL语句将“销售部”的那些工资数额低于600的职工的工资上调10%。其中销售部(DNO)的属性为E
      

  7.   

    --借vivianfdlpw() 测试数据
    declare @tb table
    (
      [部门] varchar(10),
      [员工] varchar(10),
      [工资] int
    )
    insert @tb
    select 'A','李',1000 union
    select 'B','王',2000 union
    select 'A','张',3000 union
    select 'B','赵',4000 --查询
    select 部门=case when 员工 is null then '合计'else 部门 end
    ,员工=COALESCE(员工,'')
    ,工资=sum(工资)
    from @tb group by [部门],员工  with rollup having 部门<>'合计'
    --结果
    部门         员工         工资          
    ---------- ---------- ----------- 
    A          李          1000
    A          张          3000
    合计                    4000
    B          王          2000
    B          赵          4000
    合计                    6000(所影响的行数为 6 行)
    --解法二
    select 部门=case when grouping(员工)=1 then '合计'else 部门 end
    ,员工=COALESCE(员工,'')
    ,工资=sum(工资)
    from @tb group by [部门],员工 with rollup having grouping(部门)=0--结果
    部门         员工         工资          
    ---------- ---------- ----------- 
    A          李          1000
    A          张          3000
    合计                    4000
    B          王          2000
    B          赵          4000
    合计                    6000(所影响的行数为 6 行)
      

  8.   

    1. 
       select *
       from
           (
             select * from 表
             union
             select [部门]+'合计','',sum([工资]) from 表 group by [部门]
           )t
       order by [部门]2.  update EMP
        set SALARY=1.1*A.SALARY
        from EMP A
        join DEPT B on A.DNO=B.DNo 
                    and 
                    B.DNAME='销售部'
        where A.SALARY<600