我正试图将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演示