Consulta retornando valor errado

SQL

PostgreSQL

11/11/2021

Boa tarde, montei uma pesquisa p/ saber a quantidade de entrega por lojas e por dia, porém eu gostaria que cada loja ficasse em uma coluna, fiz a consulta desta forma.

SELECT
CASE EXTRACT(dow FROM orc.datahora)
	WHEN 0 THEN ''''''''Domingo''''''''
	WHEN 1 THEN ''''''''Segunda-feira''''''''
	WHEN 2 THEN ''''''''Terça-feira''''''''
	WHEN 3 THEN ''''''''Quarta-feira''''''''
	WHEN 4 THEN ''''''''Quinta-feira''''''''
	WHEN 5 THEN ''''''''Sexta-feira''''''''
	WHEN 6 THEN ''''''''Sábado''''''''
	END AS "Dia da Semana",
TO_CHAR (orc.datahora, ''''''''DD/MM/YYYY'''''''') "Data",
COUNT(CASE WHEN unid.codigo = ''''''''01'''''''' THEN ent.id ELSE 0 END) "F1",
COUNT(CASE WHEN unid.codigo = ''''''''02'''''''' THEN ent.id ELSE 0 END) "F2",
COUNT(CASE WHEN unid.codigo = ''''''''03'''''''' THEN ent.id ELSE 0 END) "F3",
COUNT(CASE WHEN unid.codigo = ''''''''04'''''''' THEN ent.id ELSE 0 END) "B1",
COUNT(CASE WHEN unid.codigo = ''''''''05'''''''' THEN ent.id ELSE 0 END) "P+",
COUNT(CASE WHEN unid.codigo = ''''''''06'''''''' THEN ent.id ELSE 0 END) "BR",
COUNT(CASE WHEN unid.codigo = ''''''''07'''''''' THEN ent.id ELSE 0 END) "B2"
FROM entrega AS ent
INNER JOIN orcamento AS orc ON orc.id = ent.orcamentoid
INNER JOIN unidadenegocio AS unid ON unid.id = orc.unidadenegocioid
INNER JOIN venda AS vend ON vend.orcamentoid = orc.id
WHERE CAST(orc.datahora AS DATE) BETWEEN ''''''''01/10/2021'''''''' AND ''''''''31/10/2021''''''''
AND vend."status" = ''''''''F''''''''
GROUP BY 2,1


Desse jeito ele retorna o mesmo valor em todas as lojas. Alguém poderia me ajudar.
Paulo

Paulo

Curtidas 0

Respostas

Paulo

Paulo

11/11/2021

Resolvi da seguinte forma

SELECT
CASE EXTRACT(dow FROM orc.datahora)
	WHEN 0 THEN 'Domingo'
	WHEN 1 THEN 'Segunda-feira'
	WHEN 2 THEN 'Terça-feira'
	WHEN 3 THEN 'Quarta-feira'
	WHEN 4 THEN 'Quinta-feira'
	WHEN 5 THEN 'Sexta-feira'
	WHEN 6 THEN 'Sábado'
	END AS "Dia da Semana",
TO_CHAR (orc.datahora, 'DD/MM/YYYY') "Data",
COUNT(1) FILTER (WHERE unid.codigo = '01') "F1",
COUNT(1) FILTER (WHERE unid.codigo = '02') "F2",
COUNT(1) FILTER (WHERE unid.codigo = '03') "F3",
COUNT(1) FILTER (WHERE unid.codigo = '04') "B1",
COUNT(1) FILTER (WHERE unid.codigo = '05') "P+",
COUNT(1) FILTER (WHERE unid.codigo = '06') "BR",
COUNT(1) FILTER (WHERE unid.codigo = '07') "B2"
FROM entrega AS ent
INNER JOIN orcamento AS orc ON orc.id = ent.orcamentoid
INNER JOIN unidadenegocio AS unid ON unid.id = orc.unidadenegocioid
INNER JOIN venda AS vend ON vend.orcamentoid = orc.id
WHERE CAST(orc.datahora AS DATE) BETWEEN '01/10/2021' AND '31/10/2021'
AND vend."status" = 'F'
GROUP BY 2,1
GOSTEI 0
POSTAR