Ir para conteúdo
Fórum Script Brasil
  • 0

comando SQL


Aline Lozano

Pergunta

Boa tarde,

Estou com uma dúvida e não sei como solucionar, por favor me ajudem.

Tenho o seguinte comando:

SELECT DW_Notas.Id_Contrato AS Nota, DW_Notas.Competencia, DW_Fato_Producao.Lote, 
     DW_Notas.[Data de Internacao], DW_Notas.Nota AS Expr1
FROM DW_Fato_Producao 
INNER JOIN DW_Notas ON DW_Fato_Producao.Competencia = DW_Notas.Competencia AND 
     DW_Fato_Producao.Canal = DW_Notas.Canal AND 
     DW_Fato_Producao.Lote = DW_Notas.Lote AND
     DW_Fato_Producao.Nota = DW_Notas.Nota AND 
     DW_Fato_Producao.[Tipo Documento] = DW_Notas.[Tipo Documento] AND 
     DW_Fato_Producao.[Numero Documento] = DW_Notas.[Numero Documento]
WHERE (DW_Notas.Competencia = CONVERT(DATETIME, '2010-09-01 00:00:00', 102)) AND 
     (DW_Notas.[Data de Internacao] <> CONVERT(DATETIME, '1900-01-01 00:00:00', 102)) AND 
     (DW_Notas.Id_Contrato = 9400021187)
que resulta em várias linhas diferentes, mas com o mesmo número de Nota, assim quero agrupá-las, que segue:
SELECT DW_Notas.Id_Contrato AS Nota, DW_Notas.Competencia, DW_Fato_Producao.Lote, 
     DW_Notas.[Data de Internacao], DW_Notas.Nota
FROM DW_Fato_Producao 
INNER JOIN DW_Notas ON DW_Fato_Producao.Competencia = DW_Notas.Competencia AND 
     DW_Fato_Producao.Canal = DW_Notas.Canal AND 
     DW_Fato_Producao.Lote = DW_Notas.Lote AND 
     DW_Fato_Producao.Nota = DW_Notas.Nota AND 
     DW_Fato_Producao.[Tipo Documento] = DW_Notas.[Tipo Documento] AND 
     DW_Fato_Producao.[Numero Documento] = DW_Notas.[Numero Documento]
GROUP BY DW_Notas.Competencia, DW_Fato_Producao.Lote, DW_Notas.[Data de Internacao], 
     DW_Notas.Nota, DW_Notas.Id_Contrato
HAVING (DW_Notas.Competencia = CONVERT(DATETIME, '2010-09-01 00:00:00', 102)) AND 
     (DW_Notas.[Data de Internacao] <> CONVERT(DATETIME, '1900-01-01 00:00:00', 102)) AND 
     (DW_Notas.Id_Contrato = 9400021187)

agrupando-as tenho 6 registros apenas em minha tabela,

a Dúvida:

como faço para mostrar como resultado a contagem 6, que seria Total de 6 Internações ??

Espero que me ajudem.

Aline

Editado por Denis Courcy
Melhoria entendimento de código
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
...

SELECT DW_Notas.Id_Contrato AS Nota, DW_Notas.Competencia, DW_Fato_Producao.Lote, 
     DW_Notas.[Data de Internacao], DW_Notas.Nota
FROM DW_Fato_Producao 
INNER JOIN DW_Notas ON DW_Fato_Producao.Competencia = DW_Notas.Competencia AND 
     DW_Fato_Producao.Canal = DW_Notas.Canal AND 
     DW_Fato_Producao.Lote = DW_Notas.Lote AND 
     DW_Fato_Producao.Nota = DW_Notas.Nota AND 
     DW_Fato_Producao.[Tipo Documento] = DW_Notas.[Tipo Documento] AND 
     DW_Fato_Producao.[Numero Documento] = DW_Notas.[Numero Documento]
GROUP BY DW_Notas.Competencia, DW_Fato_Producao.Lote, DW_Notas.[Data de Internacao], 
     DW_Notas.Nota, DW_Notas.Id_Contrato
HAVING (DW_Notas.Competencia = CONVERT(DATETIME, '2010-09-01 00:00:00', 102)) AND 
     (DW_Notas.[Data de Internacao] <> CONVERT(DATETIME, '1900-01-01 00:00:00', 102)) AND 
     (DW_Notas.Id_Contrato = 9400021187)
agrupando-as tenho 6 registros apenas em minha tabela, a Dúvida: como faço para mostrar como resultado a contagem 6, que seria Total de 6 Internações ??
Tente assim:
SELECT COUNT(DW_Notas.Id_Contrato) AS QT_INTERNACOES
FROM DW_Fato_Producao 
INNER JOIN DW_Notas ON DW_Fato_Producao.Competencia = DW_Notas.Competencia AND 
     DW_Fato_Producao.Canal = DW_Notas.Canal AND 
     DW_Fato_Producao.Lote = DW_Notas.Lote AND 
     DW_Fato_Producao.Nota = DW_Notas.Nota AND 
     DW_Fato_Producao.[Tipo Documento] = DW_Notas.[Tipo Documento] AND 
     DW_Fato_Producao.[Numero Documento] = DW_Notas.[Numero Documento]
GROUP BY DW_Notas.Competencia, DW_Fato_Producao.Lote, DW_Notas.[Data de Internacao], 
     DW_Notas.Nota, DW_Notas.Id_Contrato
HAVING (DW_Notas.Competencia = CONVERT(DATETIME, '2010-09-01 00:00:00', 102)) AND 
     (DW_Notas.[Data de Internacao] <> CONVERT(DATETIME, '1900-01-01 00:00:00', 102)) AND 
     (DW_Notas.Id_Contrato = 9400021187)
Outra opção caso você precise dos dois. (O analítico e a quantidade total de registros retornados): Execute sua consulta normalmente acrescentando a cláusula SQL_CALC_FOUND_ROWS, assim:
SELECT SQL_CALC_FOUND_ROWS DW_Notas.Id_Contrato AS Nota, DW_Notas.Competencia, DW_Fato_Producao.Lote, 
     DW_Notas.[Data de Internacao], DW_Notas.Nota
FROM DW_Fato_Producao 
INNER JOIN DW_Notas ON DW_Fato_Producao.Competencia = DW_Notas.Competencia AND 
     DW_Fato_Producao.Canal = DW_Notas.Canal AND 
     DW_Fato_Producao.Lote = DW_Notas.Lote AND 
     DW_Fato_Producao.Nota = DW_Notas.Nota AND 
     DW_Fato_Producao.[Tipo Documento] = DW_Notas.[Tipo Documento] AND 
     DW_Fato_Producao.[Numero Documento] = DW_Notas.[Numero Documento]
GROUP BY DW_Notas.Competencia, DW_Fato_Producao.Lote, DW_Notas.[Data de Internacao], 
     DW_Notas.Nota, DW_Notas.Id_Contrato
HAVING (DW_Notas.Competencia = CONVERT(DATETIME, '2010-09-01 00:00:00', 102)) AND 
     (DW_Notas.[Data de Internacao] <> CONVERT(DATETIME, '1900-01-01 00:00:00', 102)) AND 
     (DW_Notas.Id_Contrato = 9400021187)
Depois execute a função FOUND_ROWS(), assim:
SELECT FOUND_ROWS() AS QT_INTERNACOES;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...