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