sqlserver多表查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver多表查询相关的知识,希望对你有一定的参考价值。
多表查询出现重复数据 例: A表 单位编码 单位名称 001 单位1 002 单位2 003 单位3 B表 单位编码 数据B 001 1 001 1 002 1 002 1 C表 单位编码 数据C 001 1 001 1 001 1 002 1 002 1 002 1 我想要的查询结果 单位编码 单位名称 数据B 数据C 001 单位1 2 3 002 单位2 2 3 我执行的查询代码 select max(A表.单位编码) as 单位编码, max(A表.单位名称) as 单位名称, sum(B表.数据B) as 数据B, sum(C表.数据C) as 数据C from A表 inner join B表 on A表.单位编码=B表.单位编码 inner join C表 on A表.单位编码=C表.单位编码 group by A表.单位编码 order by A表.单位编码 却得到这样的结果 单位编码 单位名称 数据B 数据C 001 单位1 6 6 002 单位2 6 6 分析结果:数据B成了正确结果的3倍,数据C成了正确结果的2倍 B表的单位编码在C表中出现了3次,所以汇总了3次 C表的单位编码在B表中出现了2次,所以汇总了2次 怎样写查询语句才会得到我想要的结果,请高手指点迷津
参考技术A 既然三个表都是有关联的,先单表统计,再合起来统计。。
select
A.*,BC.sum_B,BC.sum_C
from
A表
as
A
join
(
select
单位编码,sum_B,sum_C
from
(select
单位编码,sum(数据B)
as
sum_B
from
B表
group
by
单位编码)
as
B
join
(select
单位编码,sum(数据C)
as
sum_C
from
C表
group
by
单位编码)
as
C
on
B.单位编码=C.单位编码
)
as
BC
on
A.单位编码=BC.单位编码
简化下:
select
A.*,B.sum_B,C.sum_C
from
A表
as
A
join
(select
单位编码,sum(数据B)
as
sum_B
from
B表
group
by
单位编码)
as
B
on
A.单位编码=B.单位编码
join
(select
单位编码,sum(数据C)
as
sum_C
from
C表
group
by
单位编码)
as
C
on
A.单位编码=C.单位编码
数据库实验三 多表查询
实验三 多表查询
1.实验目的
1) 熟悉SQL Server 2008对象资源管理器环境。
2) 掌握基本的SELECT查询及其相关子句的使用。
3) 掌握复杂的SELECT查询,如多表查询、子查询、连接和联合查询。
2.实验内容
1) 启动SQL Server 2008 对象资源管理器环境。
2) 涉及多表的简单查询。
3) 涉及多表的复杂查询。
3. 实验步骤
1) 启动SQL Server对象资源管理器,打开“SQL对象资源管理器”窗口。
2) 在“SQL对象资源管理器”窗口中选择要操作的数据库,如“XSCJ”数据库。
3) 在KC表中查询学分低于3的课程信息,并按课程号升序排列。
在查询命令窗口中输入以下SQL查询命令并执行:
以上是关于sqlserver多表查询的主要内容,如果未能解决你的问题,请参考以下文章