只选择1:N关系中的一个值



我想在查询的结果中只有一个值,这是第一个值,或最后一个值,我尝试了很多东西,但我无法解决它,查询太长,但我为你选择了只有我卡住的部分。

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个表在一起…

相关内容

  • 没有找到相关文章

最新更新