Fórum Como retornar o Registro no SQL #364193

22/09/2008

0

Boa tarde amigos da lista
estou precisando da ajuda de vocês

Tenho um relatório que eu preciso exibir dentre várias informações os códigos de envio que podem ser:

1- INFORMATIZADO DISQUETE
2- INFORMATIZADO INTERNET
3- SISTEMA CARTORIO
4- QUESTIONARIO

para cada um desses eu preciso somar os seus lançamentos, só que independente se o codigo de envio retorne ou não registro eu tenho que exibi-lo zerado.

segue o SQL


nesse caso a consulta somente me retorna os códigos 1,3,4.

Como posso fazer para exibir o 2 zerado


SELECT TC.COD_MUNICIPIO, TM.NOM_MUNICIPIO, TC.COD_MUNICIPIO||´ - ´||TM.NOM_MUNICIPIO AS MUNICIPIO,
TC.COD_DIFERENCIADOR AS INFORMANTE,
TC.COD_ENVIO AS TIPO_ENVIO,
SUM(CASE WHEN TC.TIPO_INTERNET IS NULL THEN 1 ELSE 0 END) AS SEM_INTERNET,
SUM(CASE WHEN TC.TIPO_INTERNET = 1 THEN 1 ELSE 0 END) AS ADSL,
SUM(CASE WHEN TC.TIPO_INTERNET = 2 THEN 1 ELSE 0 END) AS MINI_MODEM,
SUM(CASE WHEN TC.TIPO_INTERNET = 3 THEN 1 ELSE 0 END) AS LINHA_DISCADA
FROM T_CARTORIO TC
JOIN T_MUNICIPIO TM ON (TC.COD_UF = TM.COD_UF)
AND (TC.COD_MUNICIPIO = TM.COD_MUNICIPIO)
WHERE TC.COD_UF = 33
AND TC.COD_MUNICIPIO = 00100
AND TC.COD_DIFERENCIADOR = 0
AND TC.COD_ENVIO IN (1,2,3,4)
GROUP BY TC.COD_MUNICIPIO, TM.NOM_MUNICIPIO, TC.COD_DIFERENCIADOR, TC.COD_ENVIO

Ex

MUNICIPIO TIPO_ENVIO SEM_INTERNET ADSL MINI_MODEM LINHA_DISCADA

00100 - ANGRA DOS REIS
1-INFORMATIZADO DISQUETE 3 0 0 0
2-INFORMATIZADO INTERNET 0 0 0 0
3-SISTEMA CARTORIO 1 0 0 0
4-QUESTIONARIO 1 0 0 0

tem que acrescentar o registro 2 mesmo que ele não retorne na query.

Raphael


Rbfonseca

Rbfonseca

Responder

Posts

22/09/2008

Emerson Nascimento

SELECT
  TC.COD_MUNICIPIO, TM.NOM_MUNICIPIO,
  TC.COD_MUNICIPIO||´ - ´||TM.NOM_MUNICIPIO AS MUNICIPIO,
  TC.COD_DIFERENCIADOR AS INFORMANTE,
  TC.COD_ENVIO AS TIPO_ENVIO,
  SUM(CASE WHEN TC.TIPO_INTERNET IS NULL THEN 1 ELSE 0 END) AS SEM_INTERNET,
  SUM(CASE WHEN TC.TIPO_INTERNET = 1 THEN 1 ELSE 0 END) AS ADSL,
  SUM(CASE WHEN TC.TIPO_INTERNET = 2 THEN 1 ELSE 0 END) AS MINI_MODEM,
  SUM(CASE WHEN TC.TIPO_INTERNET = 3 THEN 1 ELSE 0 END) AS LINHA_DISCADA
FROM
  T_CARTORIO TC
LEFT JOIN
  T_MUNICIPIO TM ON (TM.COD_UF = TC.COD_UF
    AND TM.COD_MUNICIPIO = TC.COD_MUNICIPIO)
WHERE
  TC.COD_UF = 33
  AND TC.COD_MUNICIPIO = 00100
  AND TC.COD_DIFERENCIADOR = 0
  AND TC.COD_ENVIO IN (1,2,3,4)
GROUP BY
  TC.COD_MUNICIPIO, TM.NOM_MUNICIPIO,
  TC.COD_DIFERENCIADOR, TC.COD_ENVIO



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar