当天的问候!!!!
我有一张表有多列不同状态的数据。
假设我有500行数据,其中包含状态'有效'我有'chkDuplicate'
的150行数据。
现在我必须编写查询,通过比较地址,城市,州等重复的几列,将这150条记录状态更新为有效或无效。
如何实现这一点,它还需要支持大数据表。
提前致谢....
表定义
CREATE TABLE XYZ
(
ID bigint,
ADDRESS navrchar,
CITY navrchar,
STATE nvarchar,
ZIP nvarchar,
STATUS
)
状态应根据重复查询进行更新。
重要!!!! 对于重复数据,第一条记录应该有效,其他记录应该无效。如果再次重新处理无效数据,则不应干扰有效记录。
如果我运行查询,上面的表应该是相同的。记录1,3应该是成功,3,4应该是'重复'。即使我已经添加了更少的1,3个总是在成功,其他重复项应该更新为“复制”。
答案 0 :(得分:0)
此查询返回了重复的行。
select tbl.data1, tbl.data2, tbl.data3
from TestTable1 tbl
inner join (
SELECT data1 , data2, data3 , COUNT(*) AS dupCount
FROM TestTable1
GROUP BY data1, data2, data3
HAVING COUNT(*) > 1
) oc on tbl.data1 = oc.data1 and tbl.data2 = oc.data2 and tbl.data3 = oc.data3
然后使用Cursor并更新重复行
答案 1 :(得分:0)
为ORDER BY子句添加了ID,即使我多次重复处理重复调用,它也适用于我。
WITH TABLE_DATA_DUPLICATE AS
(SELECT *,ROW_NUMBER()OVER(
PARTITION BY STREET1,CITY,STATE,ZIP
ORDER BY STREET1,CITY,STATE,ZIP,ID
)NO_OF_REPEATS
FROM YOURTABLE(NOLOCK))
UPDATE TABLE_DATA_DUPLICATE SET STATUS =(例如NO_OF_REPEATS = 1那么'有效'''''''''''''''''''
感谢大家的支持....干杯!!!!