SQL - Realizar un job con el siguiente Query

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado su posición en 10 puestos en SQL (en relación al último mes)
Gráfica de SQL

Realizar un job con el siguiente Query

Publicado por Alberto (6 intervenciones) el 06/01/2020 16:20:17
Buen día
Estoy trabajando en SQL Server Management Studio
Verán necesito realizar un Job que se realice de manera mensual y tengo el siguiente Query

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
DECLARE @CONTEO INT, @CONTROL INT, @FECHA_IN DATE, @FECHA_FIN DATE, @ALERTA INT, @MESSAGE AS NVARCHAR(300), @PAY INT
SET @PAY =25
SET @CONTROL=25000
SET @FECHA_IN  = '2016-08-01'
SET @FECHA_FIN = '2016-08-31'
SET @CONTEO=@CONTROL*0.2
SET @ALERTA = 0
WHILE (@CONTROL >=0)
BEGIN
--CONDICION
	IF(@CONTROL<=(@CONTEO))
	BEGIN
		IF(@ALERTA=0)
		BEGIN
			SET @MESSAGE = CONCAT(CONVERT(NVARCHAR(300),@CONTROL), ' CANTIDAD RESTANTE DE LA PAYSATATION ',CONVERT(NVARCHAR(300),@PAY))
			EXEC msdb.dbo.sp_send_dbmail
			@profile_name = 'Notifications',
			@recipients = 'digitador@ventasurbanica.com',
			@body = @MESSAGE,
			@subject = 'ALERTA DE TICKETS';
			SET @ALERTA=1
		END
	END
	IF(@CONTROL<(SELECT COUNT(intReceiptNumber) FROM dbo.trDPFEE
	WHERE dtExitDate BETWEEN @FECHA_IN AND @FECHA_FIN AND intBoardNumber = @PAY AND intReceiptNumber<>0))
	BEGIN
		BREAK
	END
	ELSE
	BEGIN
	--REALIZA LA CONSULTA
		SELECT	intBoardNumber							AS [PAYSTATION],
				COUNT(intReceiptNumber)					AS [DATO REAL],
				MIN(intReceiptNumber)					AS [DEL],
				MAX(intReceiptNumber)					AS [AL],
				@CONTROL-COUNT(intReceiptNumber)		AS [RESTANTE]
		FROM  dbo.trDPFEE WHERE dtExitDate BETWEEN @FECHA_IN AND @FECHA_FIN AND intBoardNumber = @PAY AND intReceiptNumber<>0
		GROUP BY intBoardNumber
	END
--CAMBIA EL VALOR
	SET @CONTROL =(SELECT @CONTROL-COUNT(intReceiptNumber)
	FROM trDPFee
	WHERE dtExitDate BETWEEN @FECHA_IN AND @FECHA_FIN AND intBoardNumber = @PAY AND intReceiptNumber<>0)
--SEGUIENTE MES
	SET @FECHA_IN=DATEADD(MONTH, 1, @FECHA_IN)
	SET @FECHA_FIN=DATEADD(MONTH, 1, @FECHA_FIN)
END

Lo que no se como realizar es para que sea de manera automática y que pare a la hora de que el RESTANTE sea 0 y el @Control se vuelva a iniciar nuevamente con el valor de inicio
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Realizar un job con el siguiente Query

Publicado por Isaias (1921 intervenciones) el 06/01/2020 17:03:39
¿Que motor de base de datos?, Solo dice que es SQL Server Management Studio, ¿Que version - edicion esta trabajando?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 10 puestos en SQL (en relación al último mes)
Gráfica de SQL

Realizar un job con el siguiente Query

Publicado por Alberto (6 intervenciones) el 06/01/2020 17:11:47
Es el 2017
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Realizar un job con el siguiente Query

Publicado por Isaias (1921 intervenciones) el 06/01/2020 20:28:12
Estoy tratando de comprender su codigo y no lo logra, ¿Que esta haciendo con ese codigo?, veo que envia correos, ¿cuales son las condiciones?.

Para que sea de forma TOTALMENTE AUTOMATICA, requiere del servicio de AGENT, ¿la version de SQL Server que tiene NO ES EXPRESS?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 10 puestos en SQL (en relación al último mes)
Gráfica de SQL

Realizar un job con el siguiente Query

Publicado por Alberto (6 intervenciones) el 06/01/2020 21:32:40
Si vera le comento la tabla que es trDPFEE es de un control de paequeo por lo cual las paystation son las maquinas que entregan los tickets por lo tanto cada paystation tiene un limite de tickes en este caso son de 25,000 por lo cual lo que realiza la consulta es ver el numero de factura y la cantidad de tickes que se va a restar con la cantidad que tenga entonces por ejemplo el mes de enero se dieron un total de 3,000 entonces se realiza la resta a lo cual ahora serán 22,000 y así sucesivamente con los de mas meses la única cuestión es que al llegar al 90% envía el corro avisando que ya casi llega a su limite pero como esta consulta es por mes tengo un problema que por ejemplo en un mes me quedaron 40 y en el siguiente mes se dieron un total de 1500 entonces el Restante quedara en negativos no logro hacer que ya sea que se le vuelva a agregar la cantidad de 25,000 por medio de un botón y que siga realizando la consulta con normalidad o que al momento de llegar a 0 se detenga
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Realizar un job con el siguiente Query

Publicado por Isaias (1921 intervenciones) el 06/01/2020 22:19:16
Entiendo mas o menos, ¿es su SQL SERVER la edicion EXPRESS?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 10 puestos en SQL (en relación al último mes)
Gráfica de SQL

Realizar un job con el siguiente Query

Publicado por Alberto (6 intervenciones) el 06/01/2020 22:37:59
No es el Full
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar