ВЫБЕРИТЕ МАКСИМАЛЬНЫЕ значения для повторяющихся значений в другом столбце - PullRequest
0 голосов
/ 03 декабря 2018

У меня возникли проблемы с поиском ответа на этот вопрос, поэтому я прошу прощения, если он был где-то еще.

У меня есть таблица 'dbo.M‹Import', которая имеет следующий макет, который я вытащил, чтобы найти повторяющиеся записи:

    |KEY      | DATA    |
    ---------------------
    |V9864653 | 180288  |
    |V9864653 | 22189   |
    |V9864811 | 11464   |
    |V9864811 | 12688   |

У меня возникают проблемы, когда я запускаю следующий SQLв среде DB2:

    SELECT KEY, MIN(DATA)
    FROM dbo.MileageImport
    GROUP BY KEY
    HAVING (COUNT(KEY)>1);

В итоге получается получение следующих данных:

    |KEY      | DATA    |
    ---------------------
    |V9864811 | 11464   |
    |V9864653 | 180288   |

По какой-то причине он получает значение MIN для V9864811, но не V9864653.Если я переверну это и поставлю MAX вместо MIN, то получится противоположное значение.

Есть ли что-то, чего мне здесь не хватает, чтобы я мог получить значение MIN DATA только для дублированных записей KEY, или есть другой способ сделать это?Отчет, в котором эти данные поступают от месяца к месяцу, поэтому могут быть дубликаты ключей, которые мне нужно исправить.В конечном итоге я превращаю это в оператор DELETE, чтобы удалить нижнюю из двух (или более) дублированных записей о пробеге.

1 Ответ

0 голосов
/ 03 декабря 2018

Ваш столбец DATA числовой?или VARCHAR?

Если вы считаете, что лучше заменить его на число, если можете, возможно, на целое число, если у вас нет дробей и просто круглых чисел.

, если нет, тогда вы могли бы привести их к целочисленному значению, но если транзакций много или это большая таблица, это будет медленно и не идеально.Это плохая практика, если вы можете просто изменить тип данных!

SELECT KEY, MIN(CAST(DATA as Int))
    FROM dbo.MileageImport
    GROUP BY KEY
    HAVING (COUNT(KEY)>1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...