удаление значений с перекрывающимися датами - PullRequest
2 голосов
/ 10 февраля 2012

У меня есть таблица в базе данных MS Access, которая выглядит следующим образом:

ID    Symbol    Direction    Start_val    End_val    AW    
1     ABC       up           100          120        10    
2     ABC       up           110          130        11    
3     XYZ       down         350          380        15    
4     XYZ       down         340          390        15    

Я пытаюсь удалить дубликаты символов и направлений, которые имеют перекрывающиеся start_val и end_val и самый высокий AW.Например, в приведенной выше таблице идентификаторы соответствия данных 1 имеют значения start_val и end_val, которые перекрывают значения start_val и end_val идентификатора 2. Поскольку идентификатор 1 имеет меньшее значение AW, я хочу его удалить.Для id 3 и 4 start_val и end_val перекрываются, но AW одинаков, поэтому наименьший id удаляется.

1 Ответ

0 голосов
/ 10 февраля 2012

Это должно сработать:

delete tablename
from tablename t1
inner join tablename t2 on t1.Symbol = t2.Symbol
                           and t1.Direction = t2.Direction
                           and t1.Start_val >= t2.Start_val
                           and t1.End_val <= t2.End_Val
                           and t1.AW <= t2.AW

Изготовление inner join с той же таблицей с ограничениями:

  • равно символу;
  • Направление равное;
  • больше (или равно) Start_val;
  • Меньший (или равный) End_val;
  • Меньше (или равно) AW.

выдаст вам список строк, которые вы хотите удалить.

...