SQL if Record等于它前面的记录



我正试图将excel中的一个公式复制到SQL中,我有一个带有地址的客户ID代码列表。

我把邮政编码和姓氏连在一起,按升序排列。

我想检查前面的文本字符串是否等于当前字符串。

如果是这样的话,我想把之前的ID号放在一个名为"新ID"的新字段中(在当前记录上),把旧代码放在名为"已删除代码"的新域中。

基本上,我们有重复的地址,我们想合并到一个客户,但没有删除任何数据。

新代码公式=IF(M20=M19,O19,A20)删除的代码公式=IF(N20=O20,",N20)

在SQL中可以做到这一点吗?

;WITH MyCTE AS
(
    SELECT *, 
           ROW_NUMBER()OVER (ORDER BY TextString) AS rn
    FROM   Table1
)
SELECT T1.TextString AS T1String,
       T2.TextString AS T2String,
       CASE WHEN T1.TextString = T2.TextString THEN T1.ID ELSE '' END AS NewCode,
       CASE WHEN T1.TextString = T2.TextString THEN T2.ID ELSE '' END AS OldCode
FROM   MyCTE T1
       LEFT JOIN MyCTE T2
           ON T1.rn = T2.rn+1

SQL Fiddle演示

最新更新