问一下这个SQL语句怎么写,想了好久还是写不出来.

sentball 2007-05-14 11:08:43
1 Employee 表
id Name Age
1 张三 31
2 李四 28
3 王五 40
...

2 Wages 表
-------------------------------------------------
Emp_id | 工资项目 | 工资金额 |
-------------------------------------------------
1 | 基本工资 | 1.00 |
-------------------------------------------------
1 | 补助 | 2.00 |
-------------------------------------------------
1 | 津贴 | 3.00 |
-------------------------------------------------
2 | 基本工资 | 4.00 |
-------------------------------------------------
2 | 补助 | 5.00 |
-------------------------------------------------
2 | 津贴 | 6.00 |
-------------------------------------------------
3 | 基本工资 | 7.00 |
-------------------------------------------------
3 | 补助 | 8.00 |
-------------------------------------------------
3 | 津贴 | 9.00 |
-------------------------------------------------
.........

其中, Employee 表的 id 对应于 Wages 表的 Emp_id 是1对多的关系。
请从上表用 “一句组合查询” 查询出工资统计表,要求检索出的内容格式如下:

id Name Age 基本工资 补助 津贴 合计
1 张三 31 1 2 3 6
2 李四 28 4 5 6 15
3 王五 40 7 8 9 24
...全文
234 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xln1325 2007-05-15
  • 打赏
  • 举报
回复
create table Employee(id int,Name varchar(10),Age int)
insert into Employee values(1,'张三',31)
insert into Employee values(2,'李四',28)
insert into Employee values(3,'王五',40)

create table Wages(Emp_id int,工资项目 varchar(10),工资金额 float)
insert into Wages values(1,'基本工资',1.00)
insert into Wages values(1,'补助',2.00)
insert into Wages values(1,'津贴',3.00)

insert into Wages values(2,'基本工资',4.00)
insert into Wages values(2,'补助',5.00)
insert into Wages values(2,'津贴',6.00)


insert into Wages values(3,'基本工资',7.00)
insert into Wages values(3,'补助',8.00)
insert into Wages values(3,'津贴',9.00)

select id,Name,Age,基本工资=sum(case 工资项目 when '基本工资' then 工资金额 else 0 end),
补助=sum(case 工资项目 when '补助' then 工资金额 else 0 end),
津贴=sum(case 工资项目 when '津贴' then 工资金额 else 0 end),
[统计] = SUM(工资金额)
FROM Employee left outer join Wages on Employee.id=Wages.Emp_id
group by id,Name,Age
longyxq 2007-05-15
  • 打赏
  • 举报
回复
TRY

先建个表3(TP) 4(或5)个字段 TPID 基本工资 补助 津贴 (合计)

INSERT INTO TP(TPID,基本工资)
SELECT Emp_id,工资金额
FROM Wages
WHERE 工资项目='基本工资'

UPDATE TP
SET 补助=Wages.工资金额
FROM Wages
WHERE TP.TPID=Wages.Emp_id AND 工资项目='补助'

UPDATE TP
SET 津贴=Wages.工资金额
FROM Wages
WHERE TP.TPID=Wages.Emp_id AND 工资项目='津贴'

合计不怎么会弄了
SELECT Employee.id,Employee.name,Employee.age,TP.基本工资,TP.补助,TP.津贴
FROM Employee,TP
WHERE Employee.id=TP.TPID
sentball 2007-05-14
  • 打赏
  • 举报
回复
发得不好重新发一下
1 Employee 表
id Name Age
1 张三 31
2 李四 28
3 王五 40
...

2 Wages 表
-------------------------------------------------
Emp_id | 工资项目 | 工资金额 |
-------------------------------------------------
1 | 基本工资 | 1.00 |
-------------------------------------------------
1 | 补助 | 2.00 |
-------------------------------------------------
1 | 津贴 | 3.00 |
-------------------------------------------------
2 | 基本工资 | 4.00 |
-------------------------------------------------
2 | 补助 | 5.00 |
-------------------------------------------------
2 | 津贴 | 6.00 |
-------------------------------------------------
3 | 基本工资 | 7.00 |
-------------------------------------------------
3 | 补助 | 8.00 |
-------------------------------------------------
3 | 津贴 | 9.00 |
-------------------------------------------------
.........

其中, Employee 表的 id 对应于 Wages 表的 Emp_id 是1对多的关系。
请从上表用 “一句组合查询” 查询出工资统计表,要求检索出的内容格式如下:

id Name Age 基本工资 补助 津贴 合计
1 张三 31 1 2 3 6
2 李四 28 4 5 6 15
3 王五 40 7 8 9 24
...

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧