我想在查询的结果中只有一个值,这是第一个值,或最后一个值,我尝试了很多东西,但我无法解决它,查询太长,但我为你选择了只有我卡住的部分。
select eccev.extra_data , c.id,
case when (eccev.extra_data::json->'tns')::VARCHAR = 'false'
then 'NON'
else case when coalesce((eccev.extra_data::json->'tns')::VARCHAR, '') = '' then 'EMPTY VALUE' else 'OUI'
end end as tns
from endorsement_contract_covered_element_version eccev, endorsement_contract_covered_element ecce, endorsement_contract ec, contract c, endorsement e, party_party pp
WHERE ec.endorsement = e.id
and e.applicant = pp.id
and c.subscriber = pp.id
AND eccev.covered_element_endorsement = ecce.id
and ecce.contract_endorsement = ec.id
and c.contract_number = 'CT20200909112'
对于这个查询,我得到了结果
{"qualite":"non_etu","tns":false} 199479 NON
{"qualite":"non_etu","tns":false} 199479 NON
{"qualite":"non_etu","tns":false} 199479 NON
我想只有第一行或最后一行,这样我就不会在其他行上重复,我看到我们可以使用first_value(X/(XX)),但我不能做到。
如果你们能帮助我,我会很感激由于
你可以试试这个
select distinct on (eccev.extra_data , c.id) eccev.extra_data , c.id, case when ...
但是你的查询似乎没有优化,因为你交叉连接6个表在一起…