各位高手,一个两表合并很难的问题啊,快救救我吧!!!!!!!!!!!1

sql1 2004-12-22 09:39:58
我有两张表 t1,t2, 两个表是通过ID关联的,
t1 如下
SCALE_ID, ID, OD
1 , 20, 2
2 , 20, 334
3 , 20, 5
4 , 20, 67
5 , 21, 23
6 , 21, 45
7 , 21, 78
8 , 21, 34
t2如下
DOSE_ID , ID, VALUE
1 , 21, 34
2 , 21, 6
3 , 21, 78
4 , 21, 45
5 , 20, 112
6 , 20, 2
7 , 20, 4
8 , 20, 5
我想得到表t3的结果如下
SCALE_ID, ID, OD , VALUE
1 , 20, 2 , 2
3 , 20, 5 , 4
4 , 20, 67 , 5
2 , 20, 334, 112

5 , 21, 23 , 6
8 , 21, 34 , 34
6 , 21, 45 , 45
7 , 21, 78 , 78

t3的是又以t1表为基准,先把t1按OD从小到大排序, 然后把t2按value的值从小到大排序
t3的的结果是t1和t2的ID相同 以t1为基准把VALUE的值加上,如果value的个数多于od的个数
舍去,表的规定,只会多不会少
...全文
112 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
子陌红尘 2004-12-22
  • 打赏
  • 举报
回复
select identity(1,1) as NewID, SCALE_ID, ID, OD into #a from t1 order by ID, OD
select identity(1,1) as NewID, ID, VALUE into #b from t2 order by ID, VALUE

select a.SCALE_ID, a.ID, a.OD, b.VALUE from #a a inner join #b b on a.NewID = b.NewID
order by a.ID, a.OD

drop table #a
drop table #b

NinGoo 2004-12-22
  • 打赏
  • 举报
回复
哦,要得到新表,那就直接将#temp1的除NewID列的值导入t3,呵呵
NinGoo 2004-12-22
  • 打赏
  • 举报
回复
一个思路:

把t1按OD从小到大排序后导入一临时表#temp1,临时表多一列递增的NewID,一列value值为null
把t2按value的值从小到大排序后导入一临时表#temp2,临时表多一列递增的NewID

然后按照#temp1.NewID=#temp2.NewID关联来更新#temp1.value

然后把t1清空,将#temp1的除NewID列的值导回t1

34,838

社区成员

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

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