在子查询中分组查询以获取列值作为列名

Group query in subquery to get column value as column name

我数据库中的数据:

| id| some_id|  status|
|  1| 1      | SUCCESS|
|  2| 2      | SUCCESS| 
|  3| 1      | SUCCESS| 
|  4| 3      | SUCCESS| 
|  5| 1      | SUCCESS| 
|  6| 4      | FAILED | 
|  7| 1      | SUCCESS|
|  8| 1      | FAILED |
|  9| 4      | FAILED |
| 10| 1      | FAILED |
....... 

我运行一个按id和状态分组的查询得到以下结果:

| some_id| count|  status|
| 1      |    20| SUCCESS| 
| 2      |    5 | SUCCESS| 
| 3      |    10| SUCCESS| 
| 2      |    15| FAILED | 
| 3      |    12| FAILED | 
| 4      |   25 | FAILED | 

我想使用上面的查询作为子查询来得到下面的结果,其中不同的状态是列名。

| some_id| SUCCESS|  FAILED|
| 1      |    20  |  null/0| 
| 2      |    5   |  15    | 
| 3      |    10  |  12    | 
| 4      |  null/0|  25    | 

获取最终数据的任何其他方法也值得赞赏。如果需要更多信息,请告诉我。

谢谢

您可以在此处借助 FILTER:

使用数据透视查询
SELECT
    some_id,
    COUNT(*) FILTER (WHERE status = 'SUCCESS') AS SUCCESS,
    COUNT(*) FILTER (WHERE status = 'FAILED')  AS FAILED
FROM yourTable
GROUP BY
    some_id;

Demo