2016-06-30 2 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 가 Musgrave_EDI FROM TOP 10 * 를 선택이다

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를, 공급, TrDate, Refr1, Refr2': 00 : 00.000 2016년 5월 1일 00'DateImported> = ESB_EDI_HEaders FROM 3,691,363,210

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

아래의 코드를 사용하여이 문제를 해결했다. Musgrave_EDI에서 업데이트 ESB_EDI_HEADERS SET Refr1 = b.RefNEW 는 B AS \t는 ESB_EDI_HEADERS.Refr1는 = b.RefOLD – NEER

+0

이 시도하고 또한 0 기록 – Daniel

+0

당신이이 개 테이블에 어떤 가치를 추가 할 수 반환받은 WHERE? – NEER

답변

0

? 조인중인 열이 서로 일치하지 않기 때. 일 수 있습니다.

+0

처음에는 RefOLD (및 RefNEW)가 부동 소수이며 소수점이있는 데이터 유형 문제가있었습니다. 나는 그것을 해결했고 모든 데이터 유형은 이제 nVARCHAR – Daniel

+0

입니다. 예를 들어서 RefOLD에 Refr1에 대한 참조가 없다는 것을 의미하는 2 개의 표 사이의 절편 이후 아무 결과도 없었으므로. 그래서 결과가 0입니다. –

+0

그래, 그게 내가 생각하는거야. Excel, 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) 
관련 문제