跳至内容
菜单
此问题已终结
3 回复
5428 查看

Hello All,

 I'm working on Odoo11 and using psql. And I want to select the same column twice for the same table on a different condition, For this, I'm using case statement And I got the output, but not as expected. Because I want output in a single row but it comes in two rows.

Query

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

Now result coming like that: 

project_id integer

case double_precision

case double_precision

347

7.16666666667


347


33.58333333333

Require Result:

project_id integer


case double_precision

case double_precision

347

7.16666666667

33.58333333333


For the above screenshot, it generates two rows for the same project_id and wants these columns in a single row for the same project_id. Project type is the selection field with two options(Project, Internal)

Thanks in advance


形象
丢弃
编写者 最佳答案

I got solution for my problem:

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 project_id = 347

Thanks to all

形象
丢弃
最佳答案
SELECT project_id,
CASE WHEN project_type = 'Internal' THEN SUM(unit_amount)
WHEN project_type = 'Project' THEN SUM(unit_amount) END 
FROM account_analytic_line where project_id = 347 GROUP BY project_id,project_type

pls use this 
形象
丢弃
编写者

Hello Usman, it still take two rows. I want it only in single row.

编写者

I added the expected table in the above problem.

最佳答案

Hi, you can follow this for using PSQL commands using python: https://youtu.be/ntMaAYbsDYM 

Hope it helps

形象
丢弃
相关帖文 回复 查看 活动
1
10月 20
4410
2
3月 15
3618
1
10月 24
1800
1
2月 24
2413
1
11月 22
2641