给定
CREATE TABLE Addresses
Id INT NOT NULL
Zip NVARCHAR(5) NULL
ZipPlus4 NVARCHAR(9) NULL
CREATE TABLE ZipLookup
Zip NVARCHAR(5) NULL
Code NVARCHAR(10) NULL
CREATE TABLE ZipPlus4Lookup
ZipPlus4 NVARCHAR(9) NULL
Code NVARCHAR(10) NULL
和像这样的数据
Addresses
1 | 92123 | 921234444
ZipLookup
92123 | Type A
ZipPlus4Lookup
921234444 | Type B
是否可以构造这样的查询:
如果存在匹配,地址中的给定行外部连接到 ZipPlus4Lookup
Addresses.ZipPlus4 = ZipPlus4Lookup.ZipPlus4
否则,如果存在匹配项,则 Addresses 中的给定行外部连接到 ZipLookup
Addresses.Zip = ZipLookup.Zip
否则两个表都不是外部连接的
简单来说,Addresses 表有一个 Zip 和一个 ZipPlus4 列,我需要使用最精确的匹配来查找代码。如果 Zip+4 有匹配项,请使用该匹配项中的代码。否则,请使用 Zip 匹配中的代码。
我希望我有一个尝试共享的查询,但是对于这个我不知道从哪里开始。