如何在DJANGO的ORM中编写此查询SQL

2024-06-26 08:48:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我做这个查询是为了测试, 但现在我需要把这个纳入我的观点,我不知道怎么做

SELECT Referencia, Recebido, sum(contas_paga + Salarios_Comissao + encargos) as Contas, sum(Recebido - (contas_paga + Salarios_Comissao + encargos)) as Total
 FROM(
    SELECT 
            vrm.mes_referencia as Referencia,
            vrm.mapa_atual - (vrm.mapa_atual * 0.2) as Recebido,
            (SELECT SUM(valor) from contas_pagar_contas_pagar where to_char(dt_pagamento, 'MMYYYY') = vrm.mes_referencia) as contas_paga,
            (SELECT SUM(vl_valor_pago) from func_pagamentos_pagamentos where to_char(data_pagamento, 'MMYYYY') = vrm.mes_referencia) as Salarios_Comissao,
            (SELECT SUM(salario * 1.8) from func_pagamentos_pagamentos where to_char(data_pagamento, 'MMYYYY') = vrm.mes_referencia) as encargos

    FROM venda_resumo_mapa as vrm
    WHERE vrm.mes_referencia like '%2019%'
    group by (vrm.mes_referencia, vrm.mapa_atual)
    order by vrm.mes_referencia) as f

    group by (f.Referencia, f.Recebido)

编辑

我需要做的是将查询结果发送到我的模板,我从来没有用raw做过,所以:

    def get(self, request):
        data = {}
        ano = date.today().year

     data['consulta_situacao'] = resumo_mapa.objects.raw(
            '''SELECT vrm.mes_referencia as Referencia,
                      vrm.mapa_atual - (vrm.mapa_atual * 0.2) as Recebido,
               (SELECT SUM(valor) from contas_pagar_contas_pagar where
               to_char(dt_pagamento, 'MMYYYY') = vrm.mes_referencia) as contas_paga,
               (SELECT SUM(vl_valor_pago) from func_pagamentos_pagamentos where
        to_char(data_pagamento, 'MMYYYY') = vrm.mes_referencia) as Salarios_Comissao,
               (SELECT SUM(salario * 1.8) from func_pagamentos_pagamentos where
        to_char(data_pagamento, 'MMYYYY') = vrm.mes_referencia) as encargos

        FROM venda_resumo_mapa as vrm
        WHERE  vrm.mes_referencia like %s
        group by(vrm.mes_referencia, vrm.mapa_atual)
        order by vrm.mes_referencia)''', [ano]
        )

   return render(request, 'core/result.html', data)

POSTGRESQL查询结果

“012019”“10000.00”空
“022019”“10000.00”空
“032019”“10000.00”空
“042019”“10000.00”空
“052019”“10000.00”空
“062019”“10000.00”空
“072019”“10000.00”空
“082019”“10000.00”空
“092019”“10000.00”“50000”“50000”

“102019”“10000.00”“50000”“50000”

“112019”“730276.0”“592315.33”“137960.67”


Tags: tofromdataaswhereselectsumchar