这是我的sql
SELECT a."incomeNumber"
, (CASE WHEN b."traitName" = 'sometrait1' THEN b."traitValue" END) AS "numberResult"
, (CASE WHEN b."traitName" = 'sometrait2' THEN b."traitValue" END) AS "dateResult"
FROM "request" a
JOIN "traits" b ON a.id=b."requestId"
WHERE b."traitName" = 'sometrait1'
OR b."traitName" = 'sometrait2'
GROUP BY a."incomeNumber"
, b."traitName"
, b."traitValue"
但我希望每个请求获得一行99 1 01.03.2018
,我无法解决如何处理特征表,因为sometrait1
和sometrait2
是两个不同的行。我正在使用Postgres 9.6,如果可能的话,我希望这个解决方案是普通的sql。
好的,我解决了我的问题。我只需要从GROUP BY语句中删除traitName
和traitValue
,然后将MAX添加到CASE THEN。