Это часть моих вопросов, исправляющих проблему выплаты.Это четвертое и, надеюсь, последнее.
У меня есть таблица клиентов, и я извлекаю из нее только около 10 полей.Проблема в том, что он содержит дубликаты.Дублируется не вся строка, а два поля, с которыми я идентифицирую записи, содержащие дубликаты (хотя только несколько).Эти два поля:
- Account_Number
- Поставщик
Моя тестовая таблица выглядит следующим образом
id account_no supplier customer_name meter_no StartDate EndDate EnrollDate active account_type usage* repid
--- ----------- ---------- -------------------- --------- ------------ ------------- ------------- ----------- ------------ -------- ------
1 1000 MOBIL photo company 345 11/01/2011 12/01/2011 09/01/2011 active cat2 2000 100
2 1000 MOBIL photo company 145 11/05/2011 12/04/2011 09/15/2011 active cat3 2000 100
3 1000 MOBIL photo company 645 11/05/2010 12/04/2010 08/25/2010 inactive cat2 1000 100
4 1001 HESS Adventure company 485 11/01/2011 12/01/2011 09/01/2011 active cat2 1500 200
5 1002 SHELL School company 678 11/05/2011 12/04/2011 09/15/2011 active cat2 3000 100
6 1003 BP Hospital company 595 11/05/2010 12/04/2010 08/25/2010 inactive cat2 5000 300
Обратите внимание, что учетная запись № 1, 2 и 3 являются дубликатами, потому что они имеют одинаковые Account_no и поставщика.Хотя остальные области различны, это означает, что они не являются дубликатами в истинном смысле.Например, все эти три аккаунта отличаются друг от друга meter_number.
Каждая запись присваивается представителю (последний столбец).Репы оплачиваются на основе объединения этой таблицы с другой, которая приходит извне.Мы сопоставляем только на основе этих двух столбцов Account_no и Supplier.Если они совпадают, мы говорим «хорошо», у нас есть деньги для вас, и представитель получает деньги.Проблема здесь в том, что когда я присоединился к таблице, вы можете увидеть одно и то же account_no, и поставщик появляется дважды для некоторых записей.Те должны быть удалены.
Так в чем же проблема?Хорошо, когда отчет готов, мы также хотели бы напечатать данные, отличные от account_no и Supplier.Эти данные включают в себя customer_name, start_date, end_date, использование и т. Д. Если я группирую по всем столбцам, он просто не избавляется от дубликатов.То, что я хочу сделать, это сгруппировать только по двум столбцам и показать другие данные.Типичный вывод будет выглядеть так:
id account_no supplier customer_name meter_no StartDate EndDate EnrollDate active account_type usage* repid
--- ----------- ---------- -------------------- --------- ------------ ------------- ------------- ----------- ------------ -------- ------
1 1000 MOBIL photo company 345 * * * * * 4000 100
4 1001 HESS Adventure company 485 11/01/2011 12/01/2011 09/01/2011 active cat2 1500 200
5 1002 SHELL School company 678 11/05/2011 12/04/2011 09/15/2011 active cat2 3000 100
6 1003 BP Hospital company 595 11/05/2010 12/04/2010 08/25/2010 inactive cat2 5000 300
Таблица выше на самом деле будет моей точкой зрения.Это избавит от всех дубликатов account_no и поставщика, но что произойдет с другими полями, особенно если значение для этого параметра не совпадает в этой группе?Я в порядке с тем или иным значением.Здесь нет строгих критериев, потому что этих дубликатов будет очень мало.Это означает, что с любыми данными все в порядке, но они должны принадлежать либо к той, либо к другой, либо к сумме обеих записей.
Идеальным способом создания этой таблицы было бы добавление дополнительного столбца в приведенную выше таблицу и этот списокколичество записей, которые были найдены в этой группе.
Если есть вопросы, пожалуйста, задавайте.Обратите внимание, что важным столбцом является использование, я хотел бы иметь сумму использования для группы.Но если не самое высокое значение в группе, тоже нормально.
Я не уверен, что это можно сделать в SQL-запросе.Наверное, будет способ.