Pwe*_*hee 2 sql-server sql-server-2012
有没有办法按顺序链接两个表?
表 A(实际):
EX STATUS DLV Actual FEE Expected Fee
N ACT MAIL 1.25
N ACT EMAIL 1.25
N ACT PICKUP 0
N NON MAIL 0
N NON EMAIL 1.25
N NON PICKUP 0
Y 0
Run Code Online (Sandbox Code Playgroud)
表 B(预期):
EX STATUS DLV Expected FEE
N ACT MAIL 1.25
N ACT EMAIL 0
N ACT PICKUP 0
N NON MAIL 1.25
N NON EMAIL 0
N NON PICKUP 0
Y 0
Run Code Online (Sandbox Code Playgroud)
表 A(预期结果):
EX STATUS DLV Actual FEE Expected Fee
N ACT MAIL 1.25 1.25
N ACT EMAIL 1.25 0
N ACT PICKUP 0 0
N NON MAIL 0 1.25
N NON EMAIL 1.25 0
N NON PICKUP 0 0
Y 0 0
Run Code Online (Sandbox Code Playgroud)
我想在联接中合并以下逻辑:A.EX = B.EX(首先联接)
然后是其他 3 个的组合,因为它们是独一无二的。
我尝试了这个,但当然没用:
FROM
dbo.claims a
left outer join dbo.pricing p on a.EX = p.EX
and a.STATUS = p.STATUS
and a.DLV = p.DLV
Run Code Online (Sandbox Code Playgroud)
我希望将表 B 链接到表 A 以获得预期的费用。如果Ex = Y,则无论状态或DLV如何,它都是0。如果 Ex=N,那么我必须依赖其他两列。
如果这令人困惑,我很抱歉。
Run Code Online (Sandbox Code Playgroud)create table tableA (EX char(1), STATUS char(3), DLV varchar(10), Actual_FEE decimal(18,2)); insert into tableA values ('N', 'ACT', 'MAIL', 1.25), ('N', 'ACT', 'EMAIL', 1.25), ('N', 'ACT', 'PICKUP', 0), ('N', 'NON', 'MAIL', 0), ('N', 'NON', 'EMAIL', 1.25), ('N', 'NON', 'PICKUP', 0), ('Y', null, null, 0); GO7 行受影响
Run Code Online (Sandbox Code Playgroud)create table tableB (EX char(1), STATUS char(3), DLV varchar(10), Expected_FEE decimal(18,2)); insert into tableB values ('N', 'ACT', 'MAIL', 1.25), ('N', 'ACT', 'EMAIL', 0), ('N', 'ACT', 'PICKUP', 0), ('N', 'NON', 'MAIL', 1.25), ('N', 'NON', 'EMAIL', 0), ('N', 'NON', 'PICKUP', 0), ('Y', null, null, 0); GO7 行受影响
根据您的预期结果,它可能是:
Run Code Online (Sandbox Code Playgroud)select a.EX, a.STATUS, a.DLV, a.Actual_FEE, b.Expected_FEE from tableA a left join (select distinct EX, STATUS, DLV, Expected_Fee from tableB) b on a.EX = b.EX and (a.STATUS = b.STATUS OR b.STATUS IS NULL) and (a.DLV = b.DLV or b.DLV IS NULL) GO前 | 状态 | DLV | 实际费用 | 预期_FEE :- | :----- | :-----| :--------- | :------------ 尼 | 行动 | 邮件 | 1.25 | 1.25 1.25 尼 | 行动 | 电子邮件 | 1.25 | 1.25 0.00 尼 | 行动 | 皮卡 | 0.00 | 0.00 0.00 尼 | 非| 邮件 | 0.00 | 0.00 1.25 尼 | 非| 电子邮件 | 1.25 | 1.25 0.00 尼 | 非| 皮卡 | 0.00 | 0.00 0.00 是 | 空 | 空 | 0.00 | 0.00 0.00
dbfiddle在这里