2015-03-30 2 views
0

У меня есть таблица из базы данных. Это довольно просто: у него есть ПК, назовем его WS_NUM и второе значение, которое может иметь дубликаты, называемые DEPT.SQL Grouping By Counts

Я хочу получить счет всех WS_NUM, которые соответствуют каждому DEPT (что я могу сделать).

Но, я хочу взять результаты того, что может выглядеть как

------------- 
| 1 | This | 
| 1 | That | 
| 2 | His | 
| 2 | Hers | 
| 7 | Mine | 
| 7 | Yours | 
| 7 | OURS | 
------------- 

И есть его группу графом, так что вы получите что-то вроде:

----------- 
| 1 | This | 
| | That | 
----------- 
----------- 
| 2 | His | 
| | Hers | 
----------- 
----------- 
| | Mine | 
| 7 | Yours | 
| | OURS | 
----------- 

Это даже возможно. Я знаю, что могу сделать это с помощью LINQ и некоторых дополнительных C# довольно легко, но это для SQL-запроса Confluence, поэтому я действительно ограничен тем, что я могу сделать.

+0

Какой вкус базы данных будет выполнен? например Postgres, MySQL – xathien

+1

Визуальное объединение последовательных чисел - это задание уровня отображения и не должно выполняться в SQL. Это нужно сделать в слое пользовательского интерфейса. –

+0

@xathien - Довольно уверен, что это SQL (Backend to the Track-It System) – TofuBug

ответ

0

Не зная точно, какая SQL-база поддерживает Confluence, я не могу дать точный ответ, но я могу дать общую идею.

С первоначальным запросом, который выглядит как

SELECT COUNT(WS_NUM) as WS_COUNT, DEPT FROM WOSSNAME GROUP BY DEPT 

Вы можете выполнить этот запрос как подзапрос, который будет агрегировать отделы в одну колонку. Пример из MySQL с помощью GROUP_CONCAT:

SELECT WS_COUNT, GROUP_CONCAT(DEPT SEPARATOR ',') FROM (SELECT COUNT(WS_NUM) as WS_COUNT, DEPT FROM WOSSNAME GROUP BY DEPT) as subselect GROUP BY WS_COUNT; 

Или пример Postgres с помощью array_agg:

SELECT WS_COUNT, array_agg(DEPT) FROM (SELECT COUNT(WS_NUM) as WS_COUNT, DEPT FROM WOSSNAME GROUP BY DEPT) as subselect GROUP BY WS_COUNT; 

Оба array_agg и GROUP_CONCAT являются специфическими для Postgres и MySQL, соответственно, поэтому очень важно знать, что вы запрос.