2016-06-30 6 views
0

古い参照番号と新しいものを一致させて上書きするSQLを作成しました。参照番号の一括更新、コードから0レコードを返す

これは、誤った参照番号を持つサプライヤから3000件以上の請求書を受け取ったためです。彼らは私に正しいものをExcelファイルで提供しました。

DBに新しいテーブルを作成し、新しい参照のデータをロードしました。私は次に、以下を実行しています。

私はテストデータを含む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 *

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

FROM ESB_EDI_HEADERS
SELECT TOP 10サイトコード、 サプライヤー、 trdateは、 を選択いくつかの例でありますRefr1, Refr2':00:2016年5月1日00 00.000' DateImported> = ESB_EDI_HEaders FROM

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 
んa.Refr1とb.RefOLDが同じデータ型を持つ
+0

下のコードを使用してこの問題を解決し、あなたがこれを試すことができます。 \t ESB_EDI_HEADERS.Refr1 = b.RefOLD – NEER

+0

はこれを試しましたし、また – Daniel

+0

あなたは2つのテーブルのためのいくつかの値を追加することができますが返さ0レコードを受け B AS Musgrave_EDI FROM UPDATE ESB_EDI_HEADERS SET Refr1 = b.RefNEW ? – NEER

答えて

0

?この問題は、結合する列が互いに一致しないことが原因である可能性があります。

+0

最初に、RefOLD(およびRefNEW)が浮動小数点で10進数のデータ型の問題がありました。私はそれを解決し、すべてのデータ型は現在nVARCHAR – Daniel

+0

です。あなたの例として、RefOLDがRefr1への参照を持たないことを意味する2つのテーブル間の傍受後に結果がなかったためです。だからあなたは0の結果を持っているのです。 –

+0

それは私が考えているものです。私はエクセル、CSVなどから複数の方法でデータを読み込もうとしました。何が問題なのかわからない、空白などをチェックしました – Daniel

1

これはすべてソートされています。エンドユーザーから受け取った詳細が間違っていたことが分かりました。実際には、参加する必要があったのはRefr2でした。

この後、私は記録を取り戻し始めました。追加の問題がいくつかありましたが、これはベンダーが提供する空白のために発生しました。

だから私は

BEGIN TRAN 
UPDATE ESB_EDI_HEADERS 
SET Refr2 = b.Refer2 
FROM Musgrave_EDI AS b 
WHERE Refr2 =CONVERT(VARCHAR(30),b.Record) 
関連する問題