Fala, pessoal. Tem algum problema de em vez de dar select, atualizar o valor da variável usando o set, como o abaixo?
DECLARE @DATAINICIAL DATE, @DATAFINAL DATE, @NOTAS INT
SET @DATAINICIAL = '20170101'
SET @DATAFINAL = '20170110'
SET @NOTAS = (SELECT COUNT(*) FROM [NOTAS FISCAIS] WHERE [DATA] = @DATAINICIAL)
WHILE @DATAINICIAL <= @DATAFINAL
BEGIN
SET @NOTAS = (SELECT COUNT(*) FROM [NOTAS FISCAIS] WHERE [DATA] = @DATAINICIAL)
PRINT 'No dia ' + CONVERT(VARCHAR(10), @DATAINICIAL, 103) + ' temos ' + CONVERT(VARCHAR, @NOTAS) + ' notas fiscais.'
SET @DATAINICIAL = DATEADD(DAY, 1, @DATAINICIAL)
END