我有一张桌子
seq_num create_dt col1 col2 is_load
1 1/1/2014 A B
2 2/1/2014 c D
3 3/1/2014 A B
日常数据通过加载程序加载到表中。我想编写一个查询,它应该通过与前几天的记录进行比较找到当前日记录中的重复数据,如果找到任何重复记录,则更新列is_load ='D'(从重复开始)。
所以结果应该像
`seq_num create_dt col1 col2 is_load
1 1/1/2014 A B
2 2/1/2014 C D
3 3/1/2014 A B
. .... . .
. .... . .
11 11/3/2014 A B D `
提前致谢!!!!!
答案 0 :(得分:1)
试试这个:
update myTable m
set is_load = 'D'
where exists (select null
from myTable
where m.col1 = col1
and m.col2 = col2
and m.seq_num > seq_num);
此条件m.seq_num > seq_num
有助于避免将第一个条目设置为“D”。
如果真的很重要,您可以轻松地将seq_num
更改为create_dt
,但这可能会留下一些在同一天加载的条目。
答案 1 :(得分:0)
SELECT seq_num, col1,
COUNT(col1) AS Num_Of_Occurrences
FROM table_name
GROUP BY col1
HAVING ( COUNT(col1) > 1 );