MySQL - группировка по нескольким условиям - PullRequest
3 голосов
/ 03 декабря 2010

Я пытаюсь сгруппировать информацию cerain вместе, но внешний вид данных типа A и типа B. очень отличается.

То, что я пытаюсь выяснить, это как создать условие внутри группы по выражению.

то есть


GROUP BY

click.employee_id, click.mode, asset.location, click.paper_size, asset.name

ИЛИ

click.mode, asset.location, click.paper_size, asset.name

ЗДЕСЬ click.employee_id> = 10000000


Если employee_id больше 100000, он должен группироваться только по 2-му условию, а не с учетом click.employee_id.

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 03 декабря 2010

Как насчет использования оператора CASE в GROUP BY

Что-то вроде

GROUP BY

CASE WHEN click.employee_id > 100000 THEN 1 ELSE click.employee_id END , 
click.mode, 
asset.location, 
click.paper_size, 
asset.name
1 голос
/ 04 декабря 2010

Я согласен с @astander.Однако одно предостережение ...

Прежде чем SQL фактически начнет обрабатывать запрос, он фактически запускает его два раза.Один раз, чтобы получить окончательную структуру вывода запроса, чтобы узнать окончательную ширину столбца и типы данных.Если первая запись, включенная механизмом, является идентификатором сотрудника МЕНЬШЕ, чем диапазон 100 000, CASE вернет 1 и может использовать столбец данных меньшего типа, чем столбец идентификатора сотрудника.Так что, чтобы исправить, вы можете захотеть сделать

, затем 00000001, иначе click.employee_id ...

По крайней мере, я видел это раньше и просто один на один.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...