2015-07-11 70 views
0

我有两张表,其中@ pending表是等待结算的未决资金表,@settle表是为了解决这个@ pending,但需要匹配每个记录的确切金额(值)。但我无法弄清楚如何执行这个任务。任何人都有想法。完全匹配待结算金额与结算

declare @pending as table (id int, value decimal(18,4)) 
declare @settle as table (id int, value decimal(18,4)) 

insert into @pending (id, value) values (1, 500) 
insert into @pending (id, value) values (2, 250) 
insert into @pending (id, value) values (3, 100) 
insert into @pending (id, value) values (4, 250) 

insert into @settle (id, value) values (1,500) 
insert into @settle (id, value) values (2,300) 
insert into @settle (id, value) values (3,200) 

预计结果: 记录下面将不会匹配

insert into @pending (id, value) values (3, 100) 

记录下面要匹配

insert into @pending (id, value) values (1, 500) 
insert into @pending (id, value) values (2, 250) 
insert into @pending (id, value) values (4, 250) 

insert into @settle (id, value) values (1,500) 
insert into @settle (id, value) values (2,300) 
insert into @settle (id, value) values (3,200) 

    row | pending_id | pending_value | pending_bal | match_amount | settle_id 
    ------------------------------------------------------------------ 
    1  1    500   0    500   1   
    2  2    250   0    250   2   
    3  4    250   200   50   2 
    4  4    250   0    200   3 
+0

所以这个问题到底是什么? – Mureinik

+0

对不起,我编辑过这个问题。其实我想问如何执行这个匹配的查询。 – skywills

回答

0

您可以加入该值列:

SELECT p.id, p.value, s.id, s.value 
FROM @pending p 
JOIN @settle s ON p.value = s.value 
+0

嗨,你的查询只返回第一个匹配,预计结果为第2到第4行不返回。 – skywills