2
respostas

Como eu vi um aluno vendo minhas respostas, vou tentar colocar mais resoluções embora possa ter erros já aviso.

Eu tava com preguiça de ficar dropando e recriando a tabela na mão, da eu ja coloquei no inicio a validação de existência e ao invés de setar a primeira e a última data eu consultei na tabela o min e o max e utilizei essa info pra rodar exatamente o quanto precisa.

IF OBJECT_ID('PRODUCAO_NOTAS') IS NOT NULL
    DROP TABLE PRODUCAO_NOTAS

CREATE TABLE PRODUCAO_NOTAS (
    [DATA_NOTA] DATE,
    [QUANTIDADE] INT
)
GO
SET NOCOUNT ON
DECLARE @DATAINICIAL DATE
DECLARE @DATAFINAL DATE
DECLARE @NUMNOTAS INT

SELECT @DATAINICIAL = MIN(DATA) FROM [NOTAS FISCAIS]
SELECT @DATAFINAL = MAX(DATA) FROM [NOTAS FISCAIS]

WHILE @DATAINICIAL <= @DATAFINAL
BEGIN
    SELECT @NUMNOTAS = COUNT(*) FROM [NOTAS FISCAIS]
        WHERE DATA = @DATAINICIAL

    INSERT INTO PRODUCAO_NOTAS (
        [DATA_NOTA],
        [QUANTIDADE]
    )
    VALUES(
        @DATAINICIAL,
        @NUMNOTAS
    )

    SELECT @DATAINICIAL = DATEADD(DAY, 1, @DATAINICIAL)
END
SELECT * FROM PRODUCAO_NOTAS
2 respostas

minha solução muda depois de assistir toda a parte 2 do curso:

DECLARE @PRODUCAO_NOTAS TABLE (
    [DATA_NOTA] DATE,
    [QUANTIDADE] INT
)
SET NOCOUNT ON
DECLARE @DATAINICIAL DATE
DECLARE @DATAFINAL DATE
DECLARE @NUMNOTAS INT

SELECT @DATAINICIAL = MIN(DATA) FROM [NOTAS FISCAIS]
SELECT @DATAFINAL = MAX(DATA) FROM [NOTAS FISCAIS]

WHILE @DATAINICIAL <= @DATAFINAL
BEGIN
    SELECT @NUMNOTAS = COUNT(*) FROM [NOTAS FISCAIS]
        WHERE DATA = @DATAINICIAL

    INSERT INTO @PRODUCAO_NOTAS (
        [DATA_NOTA],
        [QUANTIDADE]
    )
    VALUES(
        @DATAINICIAL,
        @NUMNOTAS
    )

    SELECT @DATAINICIAL = DATEADD(DAY, 1, @DATAINICIAL)
END
SELECT * FROM @PRODUCAO_NOTAS

claro q depende se você vai utilizar a tabela para mais alguma coisa. Nesse caso era só apresentar então achei melhor assim.

Oi, Lucas, tudo bem?

Peço desculpas por demorar a te responder.

Que legal a sua iniciativa! Fiquei muito feliz ao ler a sua mensagem, com certeza as suas soluções irão ajudar e inspirar várias alunas e vários alunos que também estão realizando o curso.

O nosso processo de aprendizagem não vem apenas do estudo individual, mas também do compartilhamento dos conceitos e saberes que vamos adquirindo com o tempo.

Continue sempre com foco e dedicação. Conte comigo para auxiliá-lo em caso de dúvidas.

Um grande abraço, Lucas!