Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

131
Visualizações
el grupo da como resultado una sola línea con identificadores similares

Tengo la siguiente consulta SQL:

 SELECT cat, CASE WHEN CCR.id_invoice_type = 52 THEN CCR.amount END earn, CASE WHEN CCR.id_invoice_type = 54 THEN CCR.amount END expend, FROM fac_invoices CCR GROUP BY CCR.cat, CCR.id_invoice_type , CCR.amount ORDER BY CCR.cat

con el siguiente resultado:

 cat earn expend ======================= 3 50,4 (null) 3 (null) (null) 3 (null) 35 5 160,7 (null) 5 (null) (null) 5 (null) 35 10 50,4 (null) 10 (null) (null) 10 (null) 35

Pero quiero obtener el resultado actual

 cat earn expend ======================= 3 50,4 35 5 160,7 35 10 50,4 35

Como puede ver, he intentado agrupar los campos pero no funciona. ¿Qué hay de malo en mi consulta? ¿O qué otras funciones debo usar para obtener el resultado deseado?

Gracias por adelantado.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Necesita simplificar el GROUP BY . Solo desea una fila por cat , por lo que debería ser la única clave en GROUP BY . Una forma de hacer lo que quieres es string_agg() :

 SELECT cat, STRING_AGG(CASE WHEN CCR.id_invoice_type = 52 THEN CCR.amount END) as earn, STRING_AGG(CASE WHEN CCR.id_invoice_type = 54 THEN CCR.amount END) as expend FROM fac_invoices CCR GROUP BY CCR.cat ORDER BY CCR.cat;

O MAX() también funciona en su caso.

 SELECT cat, MAX(CASE WHEN CCR.id_invoice_type = 52 THEN CCR.amount END) as earn, MAX(CASE WHEN CCR.id_invoice_type = 54 THEN CCR.amount END) as expend FROM fac_invoices CCR GROUP BY CCR.cat ORDER BY CCR.cat;
over 4 years ago · Santiago Trujillo Relatório

0

Deberías usar string_agg() y luego como

 CASE WHEN CCR.id_invoice_type = 52 THEN string_agg(CCR.amount,',') END earn,
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda