我有一个来自数据库的表。它非常简单:它有一个PK,我们称之为WS_NUM,第二个值可以有重复的称为DEPT。
我想获得与每个DEPT相对应的所有WS_NUM的计数(我可以做)。
但是,我希望得到可能看起来像
的结果-------------
| 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#很容易做到这一点但这是一个Confluence SQL查询所以我真的受限于我可以做的。
答案 0 :(得分: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_agg
和GROUP_CONCAT
分别特定于Postgres和MySQL,这就是为什么知道你要查询的内容很重要。