Usuário com melhor resposta
incluir contador

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
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-DFhttps://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
-
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
-
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
-
-
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-DFhttps://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
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP segunda-feira, 11 de dezembro de 2017 22:42
-
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......nMaricelmo
-
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
-
-
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
-