2017-07-14 155 views
0

例如,我有SQL - 查询:如何在此查询中使用子查询的结果?

SELECT 
    (SELECT value->>"$[0].value" 
     FROM leads_fields 
     WHERE leads_fields.field_id = 244991 AND leads_fields.lead_id = leads.external_id) 
     as 'coefRL', 
    (SELECT value->>"$[0].value" 
     FROM leads_fields 
     WHERE leads_fields.field_id = 244943 AND leads_fields.lead_id = leads.external_id) 
     as 'coefWF' 

FROM leads 

而为了获得这些价值,我需要复制像这样的第三子查询这些请求的区别?

(
    (SELECT value->>"$[0].value" 
    FROM leads_fields 
    WHERE leads_fields.field_id = 244991 AND leads_fields.lead_id = leads.external_id) 
     - 
    (SELECT value->>"$[0].value" 
     FROM leads_fields 
     WHERE leads_fields.field_id = 244943 AND leads_fields.lead_id = leads.external_id) 
) as 'difference' 

或者有更实用的方法,例如(coefRL - coefWF)

+0

您已经尝试了临时表? –

回答

1

这是一个办法做到这一点没有一个第三子查询...

SELECT coefRL, 
    coefWF, 
    coefRL-coefWF difference 
FROM 
    (SELECT 
    (SELECT value->>"$[0].value" 
    FROM leads_fields 
    WHERE leads_fields.field_id = 244991 
    AND leads_fields.lead_id = leads.external_id 
    ) AS 'coefRL', 
    (SELECT value->>"$[0].value" 
    FROM leads_fields 
    WHERE leads_fields.field_id = 244943 
    AND leads_fields.lead_id = leads.external_id 
    ) AS 'coefWF' 
    FROM leads 
) 
相关问题