--Si no existe la tabla la creamos
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Resultados]') AND type in (N'U'))
CREATE TABLE Resultados
(
Linea VARCHAR(2),
Referencia VARCHAR(20),
Valor VARCHAR(10),
Fecha VARCHAR(20),
Nombres VARCHAR(100)
)
--si ya existe borramos la información
DELETE FROM Resultados
--o
TRUNCATE TABLE Resultados
--Todo es tipo varchar ya que en tu línea 01 van títulos por ese simple hecho todo tiene que ser varchar
--Ahora inserto mi linea 1 que son los encabezados del archivo a exportar
INSERT INTO Resultados (Linea, Referencia, Valor, Fecha, Nombres)
SELECT '01', 'REFERENCIA', 'VALOR', 'FECHA', 'NOMBRES'
--Ahorea agrego todo el detalle que según entiendo el el campo línea debe llevar 02 y que tienes ya en la vista que creaste
INSERT INTO Resultados(Linea, Referencia, Valor, Fecha, Nombres)
SELECT '02', o.Referencia, o.Valor, o.Fecha, oNombres
FROM TuVista as o
--si tuvieras valores numéricos en tu resultado tendrías que convertirlos a varchar por lo t¿que te expliqué más arriba
--Arora actualizo los totaklkes para la línea 03
--hay varias maneras de hacerlo, para no causarte conflictos y haciendolo de la manera más entendible usaremos variables
--dependiendo del tipo de operación tendrás que usar GROUP BY o no
DECLARE
@Contador INT,
@SumaValor INT
SELECT @Contador = COUNT(*), @SumaValor = SUM(r.Valor)
FROM Resultados AS r
--Agregamos la línea con los resultados
INSERT INTO Resultados(Linea, Referencia, Valor, Fecha, Nombres)
SELECT '03', CONVERT(VARCHAR, @Contador), CONVERT(VARCHAR,@SumaValor), CONVERT(VARCHAR, GETDATE(), ''
--después haces la exportación de tu tabla
--el tema del Bulk Copy Program es muy extenso por lo que no me voy a detener a explicarlo, basta saber que es una utilidad
--de SQL Server y que se ejecuta a través de una ventana de comando de Windows o desde un shell de SQL
DECLARE
@Archivo VARCHAR(255),
@Command NVARCHAR(MAX)
--donde quiero mi archivo de texto
SET @Archivo = 'Ruta\ArchTexto.txt'
--armamos la sentencia
--si te fijas dentro de la sentencia va el procedimiento .xp_cmdshell que es para ejecutar un shell o línea de comando
SET @Command = 'exec master..xp_cmdshell '
+ CHAR(39) + 'bcp "select * from BaseDeDatos.dbo.Resultados" queryout "'
+ @Archivo + '" -T -c -t,' + CHAR(39) + ', no_output'
--se ejecuta el bcp y se obtiene el archivo de texto en la ruta deseada
EXECUTE sp_executesql @Command
--insisto si todo esto lo pones en un store procedure
CREATE PROCEDURE MiProcedimiento
AS
BEGIN
--aqui pones todo lo anterior
END
--despues dentro de SQL solo tienes que crear el Job (o Trabajo si es que lo tienes en español)
--y le dices la frecuencia con que se ejecutará