2015-03-30 197 views
0

我有一個來自數據庫的表。這很簡單:它有一個PK,我們稱之爲WS_NUM,第二個值可以有重複名爲DEPT。通過計數進行SQL分組

我想得到所有WS_NUM對應每個DEPT(我可以做)的計數。

但是,後來我想,以充分利用其結果可能類似於

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

而且由Count有它組,這樣你會得到這樣的:

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

這是甚至可能我知道我可以很容易地用LINQ和一些額外的C#來做到這一點,但這是一個Confluence SQL查詢,所以我受限於我能做的事情。

+0

這個數據庫會執行什麼樣的風格?例如Postgres,MySQL – xathien 2015-03-30 22:52:44

+1

目視合併連續數字是一個顯示層作業,不應在SQL中完成。它應該在UI層完成。 – 2015-03-30 22:52:50

+0

@xathien - 很確定它是SQL(後端到軌道系統) – TofuBug 2015-03-31 10:49:34

回答

0

不知道究竟哪種SQL DB支持Confluence,我無法給出確切的答案,但我可以給出一個總體思路。

,看起來像

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

您可以執行查詢作爲將聚集各部門到一個列子查詢的初始查詢。使用GROUP_CONCAT一個MySQL例如:

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; 

或者使用array_agg一個Postgres例如:

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_aggGROUP_CONCAT分別是特定於的Postgres和MySQL,這就是爲什麼知道這一點很重要,你'重新查詢。