求助:附条件合并两个表
sql吧
全部回复
仅看楼主
level 1
hehout 楼主
试图SQL实现的功能:将表一.Uid=表二.Uid的行,表二的【Quantity】减去表一的【Quantity】接在表二后新增一列NewCol;同时将表一.Uid!=表二.Uid的行,表二的【Quantity】减去0接在表二后新增一列NewCol。
表一结构与示例:
Uid Name DateTime Quantity
1 Mike 2021-07-21 2
表二结构与示例:
Uid NameOfBook Author Price Quantity
1 人间须尽欢 高军 14.9 5
2 六说文学教育 陈平原 7.6 8
3 大叔西游记 秦巴子 10.2 23
期望得到的结果:
Uid NameOfBook Author Price Quantity NewCol
1 人间须尽欢 高军 14.9 5 5-2
2 六说文学教育 陈平原 7.6 8 8-0
3 大叔西游记 秦巴子 10.2 23 9-0
2021年08月01日 02点08分 1
level 1
hehout 楼主
我,好像自己搞定了,每次都是自己发完求助就自己搞定了,真是搞笑!哈哈哈![黑线]
SELECT *, (表二.Quantity-表一.Quantity) AS NewCol FROM 表二
INNER JOIN 表一 ON 表一.Uid=表二.Uid
UNION ALL
SELECT *, (表二.Quantity) AS NewCol FROM 表二
INNER JOIN 表一 ON 表一.Uid!=表二.Uid
2021年08月01日 02点08分 2
level 1
hehout 楼主
测了一会儿,还是有问题。[泪]
当表一出现多条记录时,UNION出来的表会多出很多重复行。
2021年08月01日 05点08分 3
level 8
左连不香吗?
SELECT *, (表二.Quantity-isnull(表一.Quantity,0)) AS NewCol FROM 表二
left JOIN 表一 ON 表一.Uid=表二.Uid
2021年08月02日 02点08分 4
太久没有玩SQL了,都忘了。[吐舌]重新整理了一下,不然会有多余行列。 SELECT Uid,NameOfBook,Author,Price,Quantity,(表二.Quantity-SUM(NewCol)) AS NewCol FROM ( SELECT *,ISNULL(表一.Quantity,0) AS NewCol FROM 表二 LEFT JOIN 表一 ON 表一.Uid=表二.Uid ) GROUP BY Uid
2021年08月02日 08点08分
1