SQL如果记录等于记录之前,(SQL if Record equals the record bef

2019-10-21 01:44发布

我试图复制在Excel的公式到SQL,我有一个客户ID码与地址的列表。

我已经连接在一起的邮政编码和姓氏,并整理他们以升序排列。

我要检查,如果文本字符串之前等于当前之一。

如果是这样的话,我想之前把一个的ID号在一个叫新的ID(在当前记录)新的领域,和旧的代码在一个名为删除代码的新领域。

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

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

这是可能的SQL办?

Answer 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小提琴演示



文章来源: SQL if Record equals the record before it