0

我写了一段 SQL 来匹配旧的参考号和新的参考号,并覆盖它们。

其背景是,我们收到了来自供应商的 3000 多张发票,其参考编号不正确。他们在 Excel 文件中向我提供了正确的文件。

我在我们的数据库中创建了一个新表并加载了新引用的数据。然后我运行下面的。

我首先通过带有测试数据的 UAT 环境运行它,代码完全符合我的要求。但是当我运行以下命令时,我一直得到 0 的回报。

下面是我正在使用的代码

UPDATE a
SET a.Refr1 = b.RefNEW
FROM ESB_EDI_HEADERS AS a
INNER JOIN Musgrave_EDI AS b ON a.Refr1 = b.RefOLD

语境:

ESB_EDI_HEADERS表包含我们所有的发票。这是我们在发票上收到不正确的参考编号的地方。

Musgrave_EDI是我制作的一个新表,我从 Excel 文件中导入了数据。

我认为我导入的数据可能存在问题,因为当我运行以下命令时,我没有收到任何回复。

SELECT Refr1
FROM ESB_EDI_Headers
INTERSECT
SELECT RefOLD 
FROM Musgrave_EDI

在这里,我试图查看现有引用匹配的位置,但在这里也没有得到任何结果。

感谢对此的任何指导或帮助,我觉得这是一个数据问题,尽管我不确定如何在这个平台上共享有问题的数据。

以下是表格中的一些示例数据

Musgrave_EDI 选择 TOP 10 * FROM Musgrave_EDI

RefOLD      RefNEW
C2300008338 0
C2300008339 0
C2300008340 0
C2300027652 0
C2300027653 0
C2300027656 0
C2300005878 7439
C2300004652 8172
C2300004653 8752
C2300004654 9385

ESB_EDI_HEADERS SELECT TOP 10 Sitecode, Supplier, TrDate, Refr1, Refr2 FROM ESB_EDI_HEaders WHERE DateImported >='2016-05-01 00:00:00.000'

Sitecode    Supplier    TrDate          Refr1       Refr2
5017    000011  2016-04-28 00:00:00.000 8228378422  E02591436
5057    000011  2016-04-28 00:00:00.000             E02591454
5012    000011  2016-04-25 00:00:00.000 78316997    E02591989
5012    000011  2016-04-27 00:00:00.000 78344448    E02591990
5012    000011  2016-04-29 00:00:00.000 78367685    E02591991
5011    000011  2016-04-25 00:00:00.000 78314138    E02591992
5011    000011  2016-04-28 00:00:00.000 78352647    E02591993
5011    000011  2016-04-30 00:00:00.000 78376810    E02591994
5013    000011  2016-04-25 00:00:00.000 78316973    E02592104
5013    000011  2016-04-27 00:00:00.000 78343940    E02592105
4

2 回答 2

1

所以把这一切都整理好了。结果发现我从最终用户那里收到的详细信息不正确,因此实际上需要加入的是 Refr2。

在此之后,我开始取回记录。是一些额外的问题,但这是由于供应商提供的空白引起的。

所以我使用下面的代码解决了这个问题

BEGIN TRAN
UPDATE ESB_EDI_HEADERS 
SET Refr2 = b.Refer2
FROM Musgrave_EDI AS b 
WHERE Refr2 =CONVERT(VARCHAR(30),b.Record)
于 2016-06-30T14:54:10.037 回答
0

a.Refr1 和 b.RefOLD 是否具有相同的数据类型?问题可能是因为您要加入的列彼此不匹配。

于 2016-06-30T11:00:09.173 回答