0
我有下面的代碼比較它之前的字符串,看它們是否匹配。該代碼正在處理記錄,只有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 – 2014-09-30 10:14:05
對不起,我不知道你是什麼意思的SQL小提琴演示,我怎麼能創建這個?乾杯 – 2014-09-30 10:41:03