注册 登录
编程论坛 SQL Server论坛

[求助]sql两张表的联合查询(结帖)

梓风 发布于 2007-04-29 12:06, 1857 次点击

一、SQLServer 数据库方面的题目:

有2张表,为父子关系表:

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


表创建代码:
CREATE TABLE [dbo].[Employee] (
[id] [int] NULL ,
[UserName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Wages] (
[empid] [int] NULL ,
[Wages] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[number] [int] NULL
) ON [PRIMARY]
GO
insert into Employee values(1,'张三')
insert into Employee values(2,'李四')
insert into Employee values(3,'王五')
insert into Wages values(1,'基本工资',1)
insert into Wages values(1,'奖金',2)
insert into Wages values(1,'补贴',6)
insert into Wages values(2,'基本工资',3)
insert into Wages values(2,'奖金',4)
insert into Wages values(2,'补贴',5)
insert into Wages values(3,'基本工资',7)
insert into Wages values(3,'奖金',8)
insert into Wages values(3,'补贴',9)

[此贴子已经被作者于2007-4-29 13:42:18编辑过]

6 回复
#2
cyyu_ryh2007-04-29 12:36
用UNION关键字
不知道写错没
#3
梓风2007-04-29 12:53

用了,但是没能写出来

#4
cyyu_ryh2007-04-29 12:58
是不是你的SQL语句不正确哦?
#5
梓风2007-04-29 13:05
能不能帮我把语句写下,谢过
#6
棉花糖ONE2007-04-29 13:23
select id,Username as name,sum(case w1.wages when '基本工资' then number else 0 end) as 基本工资,
sum(case w1.wages when '奖金' then number else 0 end) as 奖金,
sum(case w1.wages when '补贴' then number else 0 end) as 补贴,sum(number) as 合计
from Employee e1,Wages w1 where e1.[id]= w1.[empid] group by id,Username order by id
#7
梓风2007-04-29 13:41
谢谢,结帖

[此贴子已经被作者于2007-4-29 13:41:53编辑过]


1