SQL 以不同的条件加入

SQL join with different conditions

我想使用列 invoicenr 内部连接 ​​TableA 和 TableB。 nr 列在两个表中的格式不同 在表A中。列 nr 始终具有三个位置或一个空值。 在 TableB 中,第 nr 列有 1 或 2 个位置。

例如,如果我们在两个表上检查 invoice= 322 和 invoice= 234。 我必须在TableB上填写“0”或“00”以等于职位数。

而对于 TableA,当 nr 为 null 或空值时,我想将其替换为 0 例如,如果我们检查两个表上的 invoice=123 和 invoice=567。

感谢您提供的任何帮助。

TableA 的 nr 列可能是 VARCHAR 而不是数字类型。
所以将其 CAST 或 CONVERT 为与 TableB.nr 相同的类型(可能是 INT)

并使用 COALESCE or ISNULL 将 NULL 更改为 0

SELECT 
  a.invoice
, b.nr
, a.name
FROM TableA a
INNER JOIN TableB b
  ON b.invoice = a.invoice 
 AND b.nr = ISNULL(CAST(a.nr AS INT), 0)