Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Consulta complexa, preciso de ajuda


Tchello

Pergunta

Tenho uma tabela com os seguintes dados:

IDContrato | IDOrdServ | DTExec | Status

610250 | 0751 | 2008-11-01 | Fechado

610251 | 0752 | 2008-11-01 | Fechado

610252 | 0753 | 2008-11-01 | Fechado

610253 | 0754 | 2008-11-01 | Aberto

610254 | 0755 | 2008-11-01 | Aberto

610255 | 0756 | 2008-11-01 | Cancelado

610256 | 0757 | 2008-11-01 | Cancelado

610257 | 0758 | 2008-11-01 | Cancelado

610258 | 0759 | 2008-11-01 | Aberto

610259 | 0760 | 2008-11-01 | Aberto

610260 | 0751 | 2008-11-02 | Fechado

610261 | 0752 | 2008-11-02 | Fechado

610262 | 0753 | 2008-11-02 | Fechado

610263 | 0754 | 2008-11-02 | Fechado

610264 | 0755 | 2008-11-02 | Fechado

610265 | 0756 | 2008-11-02 | Cancelado

610266 | 0757 | 2008-11-02 | Cancelado

610267 | 0758 | 2008-11-02 | Cancelado

610268 | 0759 | 2008-11-02 | Aberto

610269 | 0760 | 2008-11-02 | Aberto

preciso printar na tela desta forma:

Data | Fechados | Abertos | Cancelados | Total | % Fechados

01/11/2008 | 3 | 4 | 3 | 10 | 30%

02/11/2008 | 5 | 2 | 3 | 10 | 50%

Ou seja preciso que faça o COUNT(por data, fechados, abertos e cancelados)...

Porém não sei como fazer isso.

Desde já agradeço a atenção...

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Tchello,

faço desta forma no SQL Server, talvez você tenha que mudar algo ae

a parte da porcentagem não consegui fazer no sql

tenho uma página parecida mas o cálculo faço no script

se eu descobrir algo aqui eu posto ae

select
DTExec as [Data],
count(
	case Status
		when 'Fechado' then 1
		else null
	end
) as [Fechados],
count(
	case Status
		when 'Aberto' then 1
		else null
	end
) as [Abertos],
count(
	case Status
		when 'Cancelado' then 1
		else null
	end
) as [Cancelados],
count(IDContrato) as [Total]
from tabela group by DTExec
order by DTExec asc

Link para o comentário
Compartilhar em outros sites

  • 0

Tá aqui....

SELECT 
  "Data", 
  SUM("Abertos") AS "Abertos",
  SUM("Fechados") AS "Fechados",
  SUM("Cancelados") AS "Cancelados",
  SUM("Total") AS "Total",
  ((SUM("Fechados")*100)/SUM("Total"))::numeric(5,2)||'%' AS "Percentual" 
FROM
    (
    SELECT 
      "DTExec" AS "Data", 
      (CASE WHEN "Status" = 'Aberto' THEN 1 END ) AS "Abertos",
      (CASE WHEN "Status" = 'Fechado' THEN 1 END ) AS "Fechados",
      (CASE WHEN "Status" = 'Cancelado' THEN 1 END ) AS "Cancelados",
      1 AS "Total"
    FROM teste.teste
    ) AS subQ
GROUP BY "Data"

Link para o comentário
Compartilhar em outros sites

  • 0
Tá aqui....

SELECT 
  "Data", 
  SUM("Abertos") AS "Abertos",
  SUM("Fechados") AS "Fechados",
  SUM("Cancelados") AS "Cancelados",
  SUM("Total") AS "Total",
  ((SUM("Fechados")*100)/SUM("Total"))::numeric(5,2)||'%' AS "Percentual" 
FROM
    (
    SELECT 
      "DTExec" AS "Data", 
      (CASE WHEN "Status" = 'Aberto' THEN 1 END ) AS "Abertos",
      (CASE WHEN "Status" = 'Fechado' THEN 1 END ) AS "Fechados",
      (CASE WHEN "Status" = 'Cancelado' THEN 1 END ) AS "Cancelados",
      1 AS "Total"
    FROM teste.teste
    ) AS subQ
GROUP BY "Data"

Veleu Gigabyte,

Era isso mesmo que eu precisava...

Funcionou perfeitamente,

Grande Abraço,

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...