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
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
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
from
(
select * from EMP
union
select [DNO]+'合计','',sum([SALARY]) from EMP group by [DNO]
)t
order by [DNO]
我是这样写的,可错误提示为:
包含 UNION 运算符的查询表达式中的所有查询都必须在选择列表中包含同样数目的表达式。
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' 无效。
(
[部门] 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)
*/
===================>
关系DEPT表(DNO,DNAME,MANAGER),其中各属性含义依次为部门号、部门名称、部门经理的职工号。
什么意思?
我也不知道是什么意思。但我建了这样一个表:
EMP表(ENO,ENAME,SALARY,DNO),其中各属性的含义依次为职工号、姓名、工资和所在部门号,并且给了相应的数据。请用SQL语句将“销售部”的那些工资数额低于600的职工的工资上调10%。其中销售部(DNO)的属性为E
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 行)
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