无法将 SELECT MAX CASE 与学说一起使用

Unable to use SELECT MAX CASE with doctrine

我正在尝试使用 max(case...) 创建 DQL 请求 我正在使用 PostgreSQL

这是一个 table 示例:(键值是随机的)

[------TABLE------]
[TYPE |KEY|VALUE  ]
[SWEET|843|WAFFLE ]
[SWEET|258|NUTELLA]

这就是我想要的:

[TYPE |DESSERT|SAUCE  ]
[SWEET|GAUFRE |NUTELLA]

这是我已经完成的(有效)SQL:

select 
    type,
    max(case when key=843 then valeur end) as dessert,
    max(case when key=258 then valeur end) as sauce
from
    TABLE
group by type

但是,我无法将此 SQL 查询转换为 DQL,这是我绑定的(不起作用):

$qb = $this->createQueryBuilder('table')
->select('table.type')
->addSelect('max(case when table.key=843 then table.value end) as dessert')
->addSelect('max(case when table.key=258 then table.value end) as sauce')
->addGroupBy('table.type')

这是我遇到的错误:

 [Syntax Error] Error: Unexpected ')' 

我试过使用和不使用 max,生成的 DQL 都是正确的。 你能帮我吗?非常感谢你们!

解决方案是在 case when 子句中添加 ELSE:

$qb = $this->createQueryBuilder('table')
->select('table.type')
->addSelect('max(case when table.key=843 then table.value else null end) as dessert')
->addSelect('max(case when table.key=258 then table.value else null end) as sauce')
->addGroupBy('table.type')

祝你有愉快的一天