2010-12-03 2 views
3

Im пытается объединить информацию о Cerain, но способ отображения данных типа A и типа B очень отличается.MySQL - группа По нескольким условиям

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

т.е.


ГРУППА ПО

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

ИЛИ

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

HAVING click.employee_id> = 10000000


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

Thanx заранее

+0

Чтобы визуализировать то, что вы пытаетесь достичь, что вы пытаетесь выбрать из этого? – Riedsio 2010-12-03 17:40:38

ответ

3

Как об использовании сазе в 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 
+0

блестящий, ваш предыдущий пост на самом деле был тем, который я использовал. – Jaques 2010-12-05 17:10:59

1

Я согласен с @astander. Тем не менее, одна оговорка ...

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

тогда 00000001 еще click.employee_id ...

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

Смежные вопросы