Olá Heitor, tudo bem?
O seu resultado é retornado em vários selects, pelo fato de você ter utilizado o loop WHILE, e retornar o valores direto no resultado. Então, enquanto o resultado for verdadeiro um select será realizado na tabela e o resultado será retornado.
A sua query desta forma está funcionando direitinho Heitor, Parabéns :).
Mas, caso você queira retornar o valor de uma única vez, você pode fazer da mesmo forma apresentada na opnião do instrutor, printar o resultado, concatenando com a data inicial:
DECLARE @DATAINICIAL DATE
DECLARE @DATAFINAL DATE
DECLARE @NUMNOTAS INT
SET @DATAINICIAL = '20170101'
SET @DATAFINAL = '20170110'
WHILE @DATAINICIAL <= @DATAFINAL
BEGIN
SELECT @NUMNOTAS = COUNT(*) FROM [NOTAS FISCAIS]
WHERE DATA = @DATAINICIAL
PRINT CONVERT(VARCHAR(10), @DATAINICIAL) + ' --> '
+ CONVERT(VARCHAR(10), @NUMNOTAS)
SELECT @DATAINICIAL = DATEADD(DAY, 1, @DATAINICIAL)
END
Continue assim, qualquer dúvida é só falar e bons estudos!