일치하는지 확인하기 전에 문자열을 비교하는 벨로우즈 코드가 있습니다. 이 코드는 단지 1 ~ 2 개의 중복 코드가있는 레코드 작업을합니다.SQL Server 2008에서 중복 된 데이터 제거
3 현재 코드가 작동하지 않는 다음 더있는 경우.
내가해야 할 일은 이전 코드를 해당 라인의 ID로 표시하는 것입니다. 새 코드는 목록에서 첫 번째로 일치하는 항목이어야합니다 (예 : 131133). 일치하는 모든 항목에 대한 새 코드 여야합니다.
그런 다음 삭제 된 코드 및 교체 된 코드에만 표시되도록 대체 된 코드가 필요합니다. 이 예에서 141439 여야합니다.
내 코드를 사용하여이 작업을 수행 할 수 있습니까? 아니면 다른 각도에서 처리해야합니까?
미리 감사드립니다.
;WITH MyCTE AS
(
SELECT *,
ROW_NUMBER()OVER (ORDER BY SortField) AS rn
FROM Aron_Reporting.dbo.Customer_Sort
)
SELECT T1.Forename as Forename, T1.pcode, T1.Surname as Surname,T1.SortField AS T1String,
T2.SortField AS T2String,
T1.IDNO as OldCode,
CASE
WHEN T1.SortField IS NULL OR T1.SortField = ' ' OR T2.SortField = ' ' or T2.SortField IS NULL THEN T1.IDNO
WHEN T1.SortField = T2.SortField THEN T2.IDNO ELSE T1.IDNO END AS NewCode,
CASE
WHEN T1.SortField IS NULL OR T1.SortField = ' ' or T2.SortField = ' ' or T2.SortField IS NULL THEN ' '
WHEN T1.SortField = T2.SortField THEN T2.IDNO ELSE ' ' END AS DeleteCode
FROM MyCTE T1
LEFT JOIN MyCTE T2
ON T1.rn = T2.rn+1
필자는 스키마를 더 잘 이해할 수 있도록 SQL Fiddle 데모를 만드는 것이 가장 좋습니다. 그런 다음 우리는 도울 수있었습니다. 이전에 관련된 질문을 언급하는 것도 좋습니다. http://stackoverflow.com/questions/26054898/sql-if-record-equals-the-record-before-it –
죄송합니다. SQL Fiddle 데모가 무슨 의미인지 모르시겠습니까? 이걸 어떻게 만들 수 있습니까? 건배 –