select 列两次 table 在不同条件下 Psql

select column twice of same table on different condtion Psql

我正在使用 Odoo11 并使用 psql。我想 select 在不同的条件下对相同的 table 两次相同的列,为此,我正在使用 case 语句并且我得到了输出,但不是预期的那样。因为我想在一行中输出,但它有两行。

查询

 SELECT project_id,
    CASE WHEN project_type = 'Internal'  THEN SUM(unit_amount) END,
    CASE WHEN project_type = 'Project' THEN SUM(unit_amount) END 
FROM account_analytic_line where project_id = 347 GROUP BY project_id,project_type

输出截图:

对于上面的屏幕截图,它为相同的 project_id 生成两行,并希望这些列在同一行中用于相同的 project_id。

提前致谢

要在单行中获取结果,您可以使用 window 函数:

select distinct on (project_id)
project_id,
sum(unit_amount) FILTER (where project_type = 'Internal') over(PARTITION BY project_id) as intern, 
sum(unit_amount) FILTER (where project_type = 'Project') over(PARTITION BY project_id) as project
FROM account_analytic_line 

使用合适的 where 子句进行扩展。