Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá!
Usei o seguinte comando para obter a quantidade de registros, da tabela encaminhamentos (e),separados por mês:
SELECT
IFNULL(e.siglasecretaria,'TOTAL SOLICITAÇÃO') AS secretaria,
COUNT(CASE WHEN MONTH( s.data ) = 1 THEN e.siglasecretaria ELSE null END ) as 'jansol',
COUNT(CASE WHEN MONTH( s.data ) = 2 THEN e.siglasecretaria ELSE null END ) as 'fevsol',
COUNT(CASE WHEN MONTH( s.data ) = 3 THEN e.siglasecretaria ELSE null END ) as 'marsol',
COUNT(CASE WHEN MONTH( s.data ) = 4 THEN e.siglasecretaria ELSE null END ) as 'abrsol',
COUNT(CASE WHEN MONTH( s.data ) = 5 THEN e.siglasecretaria ELSE null END ) as 'maisol',
COUNT(CASE WHEN MONTH( s.data ) = 6 THEN e.siglasecretaria ELSE null END ) as 'junsol',
COUNT(CASE WHEN MONTH( s.data ) = 7 THEN e.siglasecretaria ELSE null END ) as 'julsol',
COUNT(CASE WHEN MONTH( s.data ) = 8 THEN e.siglasecretaria ELSE null END ) as 'agosol',
COUNT(CASE WHEN MONTH( s.data ) = 9 THEN e.siglasecretaria ELSE null END ) as 'setsol',
COUNT(CASE WHEN MONTH( s.data ) = 10 THEN e.siglasecretaria ELSE null END ) as 'outsol',
COUNT(CASE WHEN MONTH( s.data ) = 11 THEN e.siglasecretaria ELSE null END ) as 'novsol',
COUNT(CASE WHEN MONTH( s.data ) = 12 THEN e.siglasecretaria ELSE null END ) as 'dezsol'
FROM
solicitacao AS s
JOIN
encaminhamento e ON e.codsolicitacao = s.codsolicitacao
WHERE
year( s.data ) = 2012
AND
tipo = 'Solicitação'
GROUP BY
e.siglasecretaria
WITH ROLLUP
O problema é que pode haver mais de um registro com o mesmo codsolicitacao e nesse caso gostaria que fosse somado apenas um.
Alguém tem idéia de como posso fazer isso?
Desde já agradeço a ajuda de todos.
Obrigado pela ajuda Motta!
Na verdade, eu precisava fazer a distinção através do campo codsolicitacao. Tentei assim:
COUNT(distinct e.codsolicitacao CASE WHEN MONTH( s.data ) = 1 THEN e.siglasecretaria ELSE null END ) as 'jansol',
Mas deu erro. Acho que é erro de sintaxe.
Pode me ajudar?
COUNT(distinct (CASE WHEN MONTH( s.data ) = 1 THEN e.codsolicitacao ELSE null END) ) as 'jansol',
Muito obrigado pela ajuda Motta!
Agora está funcionando corretamente.
Abcs
Tente ...
... COUNT(distinct CASE WHEN MONTH( s.data ) = 1 THEN e.siglasecretaria ELSE null END ) as 'jansol', ...