Sie können die bedingte Aggregation verwenden, um alle Informationen für eine übergeordnete ID in einer Zeile zu erhalten, und dann ein where
verwenden Klausel für die erforderliche Bedingung.
select * from (
select parentid
,max(case when key='name' then value end) as name
,max(case when key='age' then value end) as age
,max(case when key='place' then value end) as place
from tableA
group by parentid
) t
where place='place1' and age=20
Dies setzt voraus, dass es in der Tabelle nur eine Zeile pro Schlüssel und parentid gibt.