Сгруппировать по двум столбцам, но показать больше данных из таблицы - проблема выплат - PullRequest
0 голосов
/ 01 декабря 2011

Это часть моих вопросов, исправляющих проблему выплаты.Это четвертое и, надеюсь, последнее.

У меня есть таблица клиентов, и я извлекаю из нее только около 10 полей.Проблема в том, что он содержит дубликаты.Дублируется не вся строка, а два поля, с которыми я идентифицирую записи, содержащие дубликаты (хотя только несколько).Эти два поля:

  1. Account_Number
  2. Поставщик

Моя тестовая таблица выглядит следующим образом

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-запросе.Наверное, будет способ.

1 Ответ

0 голосов
/ 01 декабря 2011

Если все в порядке с одним или другим значением, вы можете использовать функцию Min () или Max () для выбора с группой, и вы получите одно или другое.

select a, b, min(y), max(z) from table group by a, b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...