各位帮帮忙

fujunle 2007-11-20 03:50:15
tb1:
----------------------
id zonge
1 100
2 200
3 300

tb2:
----------------------
id Tb1_id name
1 1 王五
2 1 小四
3 2 大三
4 3 张三
5 3 李四

问题:如何得出以下结果
-----------------------
id tb1_id name zonge
1 1 小四 50
2 2 大三 200
3 3 张三 150
4 3 李四 150

...全文
66 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fujunle 2007-11-20
  • 打赏
  • 举报
回复
原本是一个机票订单中的
tb1相当于订票订单
tb2相当于退票订单
tb1中一个订单中可包含多个人,所以
tb2退票订单中有可能只退一个人的,那么这个订单就还有一个人是有效的
现在要求tb2退票订单中每个的金额
playwarcraft 2007-11-20
  • 打赏
  • 举报
回复

create table tb1(id int,zonge int)
insert into tb1 select 1,100
insert into tb1 select 2,200
insert into tb1 select 3,300

create table tb2(id int,tb1_id int,name varchar(10))
insert into tb2 select 1,1,'王五'
insert into tb2 select 2,1,'小四'
insert into tb2 select 3,2,'大三'
insert into tb2 select 4,3,'張三'
insert into tb2 select 5,3,'李四'

select tb2.*, convert(numeric(18,1),1.0*isnull(tb1.zonge,0)/a.num) as zonge
from tb2
left join tb1
on tb2.tb1_id=tb1.id
left join
(select tb1_id,count(*) as num from tb2 group by tb1_id) a
on tb2.tb1_id=a.tb1_id
/*
id tb1_id name zonge
----------- ----------- ---------- --------------------
1 1 王五 50.0
2 1 小四 50.0
3 2 大三 200.0
4 3 張三 150.0
5 3 李四 150.0
*/


drop table tb1,tb2
playwarcraft 2007-11-20
  • 打赏
  • 举报
回复
问题:如何得出以下结果
-----------------------
id tb1_id name zonge
1 1 小四 50
2 2 大三 200
3 3 张三 150
4 3 李四 150

====================================================
那這個結果是否還少了tb1_id=1的王五的50 ?
fujunle 2007-11-20
  • 打赏
  • 举报
回复
将tb1中的300平均分给tb2中对应的几个
chuifengde 2007-11-20
  • 打赏
  • 举报
回复
如果tb2中有6 3 赵五 结果将是如何?

34,590

社区成员

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

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