SQL如果Record等于它之前的记录

时间:2014-09-26 08:07:47

标签: sql sql-server sql-server-2008

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

我已经连接了邮政编码和姓氏,并按升序排序。

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

如果是,那么我想将之前的ID号放在名为New ID的新字段中(在当前Record上),并将旧代码放在名为Deleted codes的新字段中。

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

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

这可以在SQL中做到吗?

1 个答案:

答案 0 :(得分:1)

;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 Demo