none
incluir contador RRS feed

  • Pergunta

  • pessoal,
    tenho este script abaixo

    ; WITH Temp AS
    (
    SELECT
    ROW_NUMBER() OVER(ORDER BY idAutorizaVistoriaEscolar) AS Item, 
    idAutorizaVistoriaEscolar, v.Placa, NomeProprietario,
    CONVERT(VARCHAR(10),ae.DataInclusao, 103) AS DataAutorização,
    Semestre, Exercicio, CONVERT(VARCHAR(10),vi.DataEmissao, 103) AS DataVistoria,
    CONVERT(VARCHAR(5), NumeroLaudo) +'/'+ CONVERT(VARCHAR(5), AnoLaudo) AS NumeroLaudo,
    CASE WHEN Resultado is null then 
    ''
    when Resultado ='A' THEN 
    'Aprovado'
    ELSE 'Reprovado' END as ResultadoVistoria,
    vi.Observacao
    FROM AutorizaVistoriaEscolar ae  (NOLOCK)
    INNER JOIN rev_Veiculo V (NOLOCK) ON  ae.idVeiculo = v.idVeiculo
    LEFT JOIN Rev_Vistoria vi (NOLOCK) ON ae.idVistoria = vi.idVistoria
    INNER JOIN  CidadePais cp (NOLOCK) ON ae.idCidadePais = cp.idCidadePais
    WHERE ae.DataCancelamento IS NULL
    AND ae.DataInclusao BETWEEN @DataInicio and @DataFim
    AND (cp.CodLocal = @CodLocal or @CodLocal is null)
    AND TipoVistoria = 'E'
    )
    SELECT * FROM Temp

    Duvidas: como faco para contar quando o RESULTADO = APROVADO. E tambem contar quando RESULTADO = REPROVADO


    Maricelmo

    segunda-feira, 11 de dezembro de 2017 16:20

Respostas

  • Eu estendo o escopo errado , 

    veja se assim  é o que vc necessita

    ;WITH Temp
       AS (SELECT ROW_NUMBER() OVER (ORDER BY idAutorizaVistoriaEscolar) AS Item,
                  idAutorizaVistoriaEscolar,
                  V.Placa,
                  NomeProprietario,
                  CONVERT(VARCHAR(10), ae.DataInclusao, 103) AS DataAutorização,
                  Semestre,
                  Exercicio,
                  CONVERT(VARCHAR(10), vi.DataEmissao, 103) AS DataVistoria,
                  CONVERT(VARCHAR(5), NumeroLaudo) + '/' + CONVERT(VARCHAR(5), AnoLaudo) AS NumeroLaudo,
                  CASE
                       WHEN Resultado IS NULL THEN ''
                       WHEN Resultado = 'A' THEN 'Aprovado'
                       ELSE 'Reprovado' END AS ResultadoVistoria,
                  vi.Observacao
             FROM AutorizaVistoriaEscolar ae (NOLOCK)
            INNER JOIN rev_Veiculo V (NOLOCK)
               ON ae.idVeiculo    = V.idVeiculo
             LEFT JOIN Rev_Vistoria vi (NOLOCK)
               ON ae.idVistoria   = vi.idVistoria
            INNER JOIN CidadePais cp (NOLOCK)
               ON ae.idCidadePais = cp.idCidadePais
            WHERE ae.DataCancelamento IS NULL
              AND ae.DataInclusao BETWEEN @DataInicio AND @DataFim
              AND (   cp.CodLocal = @CodLocal
                 OR   @CodLocal IS NULL)
              AND TipoVistoria    = 'E')
    SELECT *,
    		TotalAprovado = SUM(CASE
                                         WHEN ResultadoVistoria = 'Aprovado' THEN 1
                                         ELSE 0 END) OVER (),
    		TotalReprovado = SUM(CASE
                                         WHEN ResultadoVistoria = 'Reprovado' THEN 1
                                         ELSE 0 END) OVER ()
    
      FROM Temp;

    Wesley Neves - Brasilia-DF     

    https://wesleyneves.wordpress.com/

    SELECT Tab.[that's me:]

    FROM

    (

        VALUES

            ('Wesley Neves'),

            ('Analista.NET'),

            ('Pós Graduando em Banco de Dados com ênfase em BI'),

            ('MTA -SQL Server'),

            ('MTA -Web Developed')

    ) AS Tab ("that's me:");


    "Se a resposta for útil ou ajudar ,não esqueça de marcar"





    Wesley Neves

    • Sugerido como Resposta Adrian Hideki segunda-feira, 11 de dezembro de 2017 23:11
    • Marcado como Resposta Maricelmo terça-feira, 12 de dezembro de 2017 11:18
    segunda-feira, 11 de dezembro de 2017 17:56
  • vc tem que particionar o resultado do rownumber tambem por Codlocal exemplo 

    OVER ( partition  BY Codlocal   ORDER BY idAutorizaVistoriaEscolar) AS Item

    Wesley Neves - Brasilia-DF     

    https://wesleyneves.wordpress.com/

    SELECT Tab.[that's me:]

    FROM

    (

        VALUES

            ('Wesley Neves'),

            ('Analista.NET'),

            ('Pós Graduando em Banco de Dados com ênfase em BI'),

            ('MTA -SQL Server'),

            ('MTA -Web Developed')

    ) AS Tab ("that's me:");


    "Se a resposta for útil ou ajudar ,não esqueça de marcar"





    Wesley Neves

    • Marcado como Resposta Maricelmo terça-feira, 12 de dezembro de 2017 16:00
    terça-feira, 12 de dezembro de 2017 13:18
  • Isso aee


    Wesley Neves

    • Marcado como Resposta Maricelmo terça-feira, 12 de dezembro de 2017 17:34
    terça-feira, 12 de dezembro de 2017 16:56

Todas as Respostas

  • Acredito que algo assim funcione
    ;WITH Temp
       AS (SELECT ROW_NUMBER() OVER (ORDER BY idAutorizaVistoriaEscolar) AS Item,
                  idAutorizaVistoriaEscolar,
                  V.Placa,
                  NomeProprietario,
                  CONVERT(VARCHAR(10), ae.DataInclusao, 103) AS DataAutorização,
                  Semestre,
                  Exercicio,
                  CONVERT(VARCHAR(10), vi.DataEmissao, 103) AS DataVistoria,
                  CONVERT(VARCHAR(5), NumeroLaudo) + '/' + CONVERT(VARCHAR(5), AnoLaudo) AS NumeroLaudo,
                  CASE
                       WHEN Resultado IS NULL THEN ''
                       WHEN Resultado = 'A' THEN 'Aprovado'
                       ELSE 'Reprovado' END AS ResultadoVistoria,
                  vi.Observacao
             FROM AutorizaVistoriaEscolar ae (NOLOCK)
            INNER JOIN rev_Veiculo V (NOLOCK)
               ON ae.idVeiculo    = V.idVeiculo
             LEFT JOIN Rev_Vistoria vi (NOLOCK)
               ON ae.idVistoria   = vi.idVistoria
            INNER JOIN CidadePais cp (NOLOCK)
               ON ae.idCidadePais = cp.idCidadePais
            WHERE ae.DataCancelamento IS NULL
              AND ae.DataInclusao BETWEEN @DataInicio AND @DataFim
              AND (   cp.CodLocal = @CodLocal
                 OR   @CodLocal IS NULL)
              AND TipoVistoria    = 'E')
    SELECT *,
    		COUNT() OVER(PARTITION BY Temp.ResultadoVistoria)
      FROM Temp;




    Wesley Neves - Brasilia-DF     

    https://wesleyneves.wordpress.com/

    SELECT Tab.[that's me:]

    FROM

    (

        VALUES

            ('Wesley Neves'),

            ('Analista.NET'),

            ('Pós Graduando em Banco de Dados com ênfase em BI'),

            ('MTA -SQL Server'),

            ('MTA -Web Developed')

    ) AS Tab ("that's me:");


    "Se a resposta for útil ou ajudar ,não esqueça de marcar"





    Wesley Neves

    segunda-feira, 11 de dezembro de 2017 16:28
  • Ola, gostaria de saber quantitativos de  APROVADOS e quantitativos de REPROVADOS.

    Maricelmo

    segunda-feira, 11 de dezembro de 2017 16:53
  • Eu estendo o escopo errado , 

    veja se assim  é o que vc necessita

    ;WITH Temp
       AS (SELECT ROW_NUMBER() OVER (ORDER BY idAutorizaVistoriaEscolar) AS Item,
                  idAutorizaVistoriaEscolar,
                  V.Placa,
                  NomeProprietario,
                  CONVERT(VARCHAR(10), ae.DataInclusao, 103) AS DataAutorização,
                  Semestre,
                  Exercicio,
                  CONVERT(VARCHAR(10), vi.DataEmissao, 103) AS DataVistoria,
                  CONVERT(VARCHAR(5), NumeroLaudo) + '/' + CONVERT(VARCHAR(5), AnoLaudo) AS NumeroLaudo,
                  CASE
                       WHEN Resultado IS NULL THEN ''
                       WHEN Resultado = 'A' THEN 'Aprovado'
                       ELSE 'Reprovado' END AS ResultadoVistoria,
                  vi.Observacao
             FROM AutorizaVistoriaEscolar ae (NOLOCK)
            INNER JOIN rev_Veiculo V (NOLOCK)
               ON ae.idVeiculo    = V.idVeiculo
             LEFT JOIN Rev_Vistoria vi (NOLOCK)
               ON ae.idVistoria   = vi.idVistoria
            INNER JOIN CidadePais cp (NOLOCK)
               ON ae.idCidadePais = cp.idCidadePais
            WHERE ae.DataCancelamento IS NULL
              AND ae.DataInclusao BETWEEN @DataInicio AND @DataFim
              AND (   cp.CodLocal = @CodLocal
                 OR   @CodLocal IS NULL)
              AND TipoVistoria    = 'E')
    SELECT *,
    		TotalAprovado = SUM(CASE
                                         WHEN ResultadoVistoria = 'Aprovado' THEN 1
                                         ELSE 0 END) OVER (),
    		TotalReprovado = SUM(CASE
                                         WHEN ResultadoVistoria = 'Reprovado' THEN 1
                                         ELSE 0 END) OVER ()
    
      FROM Temp;

    Wesley Neves - Brasilia-DF     

    https://wesleyneves.wordpress.com/

    SELECT Tab.[that's me:]

    FROM

    (

        VALUES

            ('Wesley Neves'),

            ('Analista.NET'),

            ('Pós Graduando em Banco de Dados com ênfase em BI'),

            ('MTA -SQL Server'),

            ('MTA -Web Developed')

    ) AS Tab ("that's me:");


    "Se a resposta for útil ou ajudar ,não esqueça de marcar"





    Wesley Neves

    • Sugerido como Resposta Adrian Hideki segunda-feira, 11 de dezembro de 2017 23:11
    • Marcado como Resposta Maricelmo terça-feira, 12 de dezembro de 2017 11:18
    segunda-feira, 11 de dezembro de 2017 17:56
  • Deleted
    segunda-feira, 11 de dezembro de 2017 18:59
  • Ola,

    a resposta do Wesley Neves, me atendeu perfeitamente
    Porem tenho mais uma duvida:

    estou usando a clausula SELECT ROW_NUMBER() OVER (ORDER BY idAutorizaVistoriaEscolar) AS Item
    e tambem                      AND (   cp.CodLocal = @CodLocal ), 
    desta forma quando o CodLocal for igual ao que for informado o item sera 1,2,3,4..........n
    O que eu gostaria de fazer era listar todos os CodLocal e quando o CodLocal for Diferente o item
    Comecasse a contagem do item.

    EX:

    Codlocal = 1
    Item 1,2,3,4,5.......n
    CodLocal = 2
    Item 1,2,3,4,5......n


    Maricelmo

    terça-feira, 12 de dezembro de 2017 12:56
  • vc tem que particionar o resultado do rownumber tambem por Codlocal exemplo 

    OVER ( partition  BY Codlocal   ORDER BY idAutorizaVistoriaEscolar) AS Item

    Wesley Neves - Brasilia-DF     

    https://wesleyneves.wordpress.com/

    SELECT Tab.[that's me:]

    FROM

    (

        VALUES

            ('Wesley Neves'),

            ('Analista.NET'),

            ('Pós Graduando em Banco de Dados com ênfase em BI'),

            ('MTA -SQL Server'),

            ('MTA -Web Developed')

    ) AS Tab ("that's me:");


    "Se a resposta for útil ou ajudar ,não esqueça de marcar"





    Wesley Neves

    • Marcado como Resposta Maricelmo terça-feira, 12 de dezembro de 2017 16:00
    terça-feira, 12 de dezembro de 2017 13:18
  • Ola,
    Entendi, mas me desculpe em qual parte do script coloco esta linha?
    OVER ( partition  BY Codlocal   ORDER BY idAutorizaVistoriaEscolar) AS Item

    Maricelmo

    terça-feira, 12 de dezembro de 2017 15:29
  • Ola,
    Consegui, para quem precisar o Código ficou assim:

    ;WITH Temp
       AS (SELECT ROW_NUMBER() OVER (ORDER BY idAutorizaVistoriaEscolar) AS Item,
    ROW_NUMBER() OVER ( partition  BY cp.CodLocal  ORDER BY idAutorizaVistoriaEscolar) AS TotalItem,
                  idAutorizaVistoriaEscolar,
                  v.Placa,
                  NomeProprietario,
                  CONVERT(VARCHAR(10), ae.DataInclusao, 103) AS DataAutorização,
                  Semestre,
                  Exercicio,
                  CONVERT(VARCHAR(10), vi.DataEmissao, 103) AS DataVistoria,
                  CONVERT(VARCHAR(5), NumeroLaudo) + '/' + CONVERT(VARCHAR(5), AnoLaudo) AS NumeroLaudo,
                  CASE
                       WHEN Resultado IS NULL THEN ''
                       WHEN Resultado = 'A' THEN 'Aprovado'
                       ELSE 'Reprovado' END AS ResultadoVistoria,
      vi.Observacao,
    RIGHT(ae.UsuarioInclusao,11) AS CPFAutorização,
    RIGHT(vi.UsuarioInclusao,11) AS CPFVistoria,
    cp.NomeLocal as CidadeAutorizacao
             FROM AutorizaVistoriaEscolar ae  (NOLOCK)
            INNER JOIN rev_Veiculo V (NOLOCK)
               ON ae.idVeiculo    = V.idVeiculo
             LEFT JOIN Vistoria vi (NOLOCK)
               ON ae.idVistoria   = vi.idVistoria
            INNER JOIN CidadePais cp (NOLOCK)
               ON ae.idCidadePais = cp.idCidadePais
            WHERE ae.DataCancelamento IS NULL
    AND ae.DataInclusao BETWEEN '2017/06/15' and '2018/01/15'
    --AND (cp.CodLocal = '0043' )
    AND TipoVistoria = 'E'
    )
    SELECT *,
    TotalNulos    = SUM(CASE
                 WHEN ResultadoVistoria = '' THEN 1
                                         ELSE 0 END) OVER (),
    TotalAprovado = SUM(CASE
                                         WHEN ResultadoVistoria = 'Aprovado' THEN 1
                                         ELSE 0 END) OVER (),
    TotalReprovado = SUM(CASE
                                         WHEN ResultadoVistoria = 'Reprovado' THEN 1
                                         ELSE 0 END) OVER ()

    FROM Temp Order by CidadeAutorizacao;

    Maricelmo

    terça-feira, 12 de dezembro de 2017 15:59
  • Isso aee


    Wesley Neves

    • Marcado como Resposta Maricelmo terça-feira, 12 de dezembro de 2017 17:34
    terça-feira, 12 de dezembro de 2017 16:56