Postgres组/压缩结果行在1个链接行内

时间:2016-08-17 14:47:55

标签: postgresql group-by

我有一个包含2个表的表结构:

结果表:1行,泛型为+行UUID。

--------------------------
| uuid    | name | other |
--------------------------
| result1 | foo  | bar   |
--------------------------
| result2 | foo2 | bar2  |
--------------------------

criteria_result

-----------------------------------
| result_uuid | crit_uuid | value |
-----------------------------------
| result1     | crit1     | 7     |
-----------------------------------
| result1     | crit2     | 8     |
-----------------------------------
| result1     | crit3     | 9     |
-----------------------------------
| result1     | crit7     | 4     |
-----------------------------------
| result2     | crit1     | 2     |
-----------------------------------

我需要的是每个结果表格中的一行,但该组中包含所有 criteria_result 表格,例如:

----------------------------------------------------
| uuid    | name |         result_crit              |
----------------------------------------------------
| result1 | foo  | [                              
                 |   | crit1 | crit2 | crit3 | crit7 |
                 |   | 7     | 8     | 9     | 4     |]
----------------------------------------------------
| result2 | foo2  | [                              
                  |   | crit1 |
                  |   |  2    | ]
----------------------------------------------------

甚至

-----------------------------------------
| uuid    | name |      result_crit     |
-----------------------------------------
| result1 | foo  | [ | name  | value |
                     | crit1 |  7    |
                     | crit2 |  8    |
                     | crit3 |  9    |
                     | crit7 |  4    |  ]
-----------------------------------------
-----------------------------------------
| result2 | foo2  | [ | name  | value |
                      | crit1 |  2    |  ]
-----------------------------------------

当我导出它时,每行只能获得1个结果,但是在该子数组/对象中也包含该行/结果的所有条件。

SELECT 
  result.uuid, 
  result.name, 
  criteria_result.result_uuid
FROM 
  public.criteria_result, 
  public.result
WHERE 
  result.uuid = criteria_result.result_uuid;

我尝试了CUBE,GROUP BY,GROUPING SETS,但我似乎没有做对或找到答案:/。 谢谢 注意:我最近有一个Postgres 9.5.1。

0 个答案:

没有答案