求sql语句[两个表分组的问题]

xiaowei_001 2010-06-05 03:21:40

两个表分组的问题
需求:
两个表
tb1(进货)
编号 名称 型号 数量。。。
1 西瓜 大的 20
2 西瓜 小的 10
3 黄瓜 长的 15
4 西瓜 大的 20
5 黄瓜 短的 15
6 西瓜 大的 20
7 黄瓜 长的 15
.
.

tb2(出货)
编号 名称 型号 数量。。。
1 西瓜 大的 15
3 黄瓜 长的 5
2 西瓜 小的 5
2 西瓜 小的 5
1 西瓜 大的 15
4 黄瓜 短的 5

输出:
名称 型号 数量(进货) 数量(出货) 余数(进货-出货)
西瓜 大的 60 30 30
西瓜 小的 10 10 0
黄瓜 长的 30 5 25
黄瓜 短的 15 5 10

tb1,tb2的编号为主键
...全文
116 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
VSNET源码整理 2010-06-07
  • 打赏
  • 举报
回复
select
a.名称,a.型号,isnull(a.数量,0) as 数量,isnull(b.数量,0) as 数量,isnull(a.数量,0)-isnull(b.数量,0) as 余数
from
(select 编号,名称,型号,sum(数量) as 数量 from tb1 group by 编号,名称,型号)a,
(select 编号,名称,型号,sum(数量) as 数量 from tb1 group by 编号,名称,型号)b
where
a.编号*=b.编号
wqmgxj 2010-06-06
  • 打赏
  • 举报
回复
select
a.名称,a.型号,a.数量,b.数量,isnull(a.型号,0)-isnull(b.型号,0) as 余数
from
(select 名称,型号,sum(数量) as 数量 from tb1 group by 名称,型号)a,
(select 名称,型号,sum(数量) as 数量 from tb1 group by 名称,型号)b
where
a.名称=b.名称
and
a.型号=b.型号
rains0929 2010-06-05
  • 打赏
  • 举报
回复
select
a.名称,a.型号,a.数量,b.数量,isnull(a.型号,0)-isnull(b.型号,0) as 余数
from
(select 名称,型号,sum(数量) as 数量 from tb1 group by 名称,型号)a,
(select 名称,型号,sum(数量) as 数量 from tb1 group by 名称,型号)b
where
a.名称=b.名称
and
a.型号=b.型号
htl258_Tony 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xiaowei_001 的回复:]
引用 7 楼 fredrickhu 的回复:
引用 4 楼 fredrickhu 的回复:
SQL code
select
a.名称,a.型号,isnull(a.数量,0) as 数量,isnull(b.数量,0) as 数量,isnull(a.数量,0)-isnull(b.数量,0) as 余数
from
(select 名称,型号,sum(数量) as 数量 from tb1 gr……
[/Quote]派生表的别名撒
xiaowei_001 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fredrickhu 的回复:]
引用 4 楼 fredrickhu 的回复:
SQL code
select
a.名称,a.型号,isnull(a.数量,0) as 数量,isnull(b.数量,0) as 数量,isnull(a.数量,0)-isnull(b.数量,0) as 余数
from
(select 名称,型号,sum(数量) as 数量 from tb1 group by 名称,型号)a,
(select……
[/Quote]



a,b是啥
黄_瓜 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fredrickhu 的回复:]

引用 4 楼 fredrickhu 的回复:
SQL code
select
a.名称,a.型号,isnull(a.数量,0) as 数量,isnull(b.数量,0) as 数量,isnull(a.数量,0)-isnull(b.数量,0) as 余数
from
(select 名称,型号,sum(数量) as 数量 from tb1 group by 名称,型号)a,
(sele……
[/Quote]
流氓。
黄_瓜 2010-06-05
  • 打赏
  • 举报
回复
--> 测试数据:[tb1]
if object_id('[tb1]') is not null drop table [tb1]
go
create table [tb1]([编号] int,[名称] varchar(4),[型号] varchar(4),[数量] int)
insert [tb1]
select 1,'西瓜','大的',20 union all
select 2,'西瓜','小的',10 union all
select 3,'黄瓜','长的',15 union all
select 4,'西瓜','大的',20 union all
select 5,'黄瓜','短的',15 union all
select 6,'西瓜','大的',20 union all
select 7,'黄瓜','长的',15

--> 测试数据:[tb2]
if object_id('[tb2]') is not null drop table [tb2]
go
create table [tb2]([编号] int,[名称] varchar(4),[型号] varchar(4),[数量] int)
insert [tb2]
select 1,'西瓜','大的',15 union all
select 3,'黄瓜','长的',5 union all
select 2,'西瓜','小的',5 union all
select 2,'西瓜','小的',5 union all
select 1,'西瓜','大的',15 union all
select 4,'黄瓜','短的',5

--------------------------------查询开始------------------------------

select a.[名称],a.[型号],a.[数量(进货)],b.[数量(出货)], a.[数量(进货)]-b.[数量(出货)] from
(
select a.[名称],a.[型号],sum(a.[数量]) as [数量(进货)] from [tb1] a group by a.[名称],a.[型号]
) a,
(
select b.[名称],b.[型号],sum(b.[数量]) as [数量(出货)] from [tb2] b group by b.[名称],b.[型号]
) b
where a.[名称]=b.[名称] and a.[型号]=b.[型号]
order by a.[名称] desc
/*
名称 型号 数量(进货) 数量(出货)
---- ---- ----------- ----------- -----------
西瓜 大的 60 30 30
西瓜 小的 10 10 0
黄瓜 长的 30 5 25
黄瓜 短的 15 5 10

(4 行受影响)
--小F-- 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fredrickhu 的回复:]
SQL code
select
a.名称,a.型号,isnull(a.数量,0) as 数量,isnull(b.数量,0) as 数量,isnull(a.数量,0)-isnull(b.数量,0) as 余数
from
(select 名称,型号,sum(数量) as 数量 from tb1 group by 名称,型号)a,
(select 名称,型号,sum(数量……
[/Quote]

select
a.名称,a.型号,isnull(a.数量,0) as 数量,isnull(b.数量,0) as 数量,isnull(a.数量,0)-isnull(b.数量,0) as 余数
from
(select 名称,型号,sum(数量) as 数量 from tb1 group by 名称,型号)a,
(select 名称,型号,sum(数量) as 数量 from tb2 group by 名称,型号)b
where
a.名称=b.名称
and
a.型号=b.型号
Andy__Huang 2010-06-05
  • 打赏
  • 举报
回复
select a.名称,a.型号,sum(a.数量) as 进数量,sum(b.数量) as 出数量,sum(isnull(a.数量,0))-sum(isnull(b.数量,0)) as 余数量
from tb1 a
left join tb2 b on a.id=b.id
group by a.名称,a.型号


--小F-- 2010-06-05
  • 打赏
  • 举报
回复
select
a.名称,a.型号,isnull(a.数量,0) as 数量,isnull(b.数量,0) as 数量,isnull(a.数量,0)-isnull(b.数量,0) as 余数
from
(select 名称,型号,sum(数量) as 数量 from tb1 group by 名称,型号)a,
(select 名称,型号,sum(数量) as 数量 from tb1 group by 名称,型号)b
where
a.名称=b.名称
and
a.型号=b.型号
xiaowei_001 2010-06-05
  • 打赏
  • 举报
回复
tb2编号弄错了,应该是自增的
--小F-- 2010-06-05
  • 打赏
  • 举报
回复
select
a.名称,a.型号,a.数量,b.数量,isnull(a.型号,0)-isnull(b.型号,0) as 余数
from
(select 名称,型号,sum(数量) as 数量 from tb1 group by 名称,型号)a,
(select 名称,型号,sum(数量) as 数量 from tb1 group by 名称,型号)b
where
a.名称=b.名称
and
a.型号=b.型号

34,593

社区成员

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

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