Buenas tardes Señores de esta linda comunidad espero esten bien,
Me podrían ayudar favor, tengo un query que me muestra la fecha de las facturas y los días que lleva desde la fecha de contabilización a la fecha de hoy, necesito que al ejecutar el query este me permita seleccionar como un filtro que le pueda digitar y seleccionar y decir muestre las facturas que llevan mas de 6 días.
Seria algo como
Fecha iNicial: 01/12/2018
Fecha Final: 11/12/2018
Días sin facturar: 8 días
Este es mi query
SELECT
T0.[CardCode],
T0.[CardName],
T0.[City],
T0.[Phone1],
T0.[Phone2],
T0.[E_MaiL],
T0.[Address],
T1.[SlpName],
T2.[DocNum],
T2.[DocDate],
DATENAME (WEEKDAY,T2.[DocDate]) AS 'Dia de Facturación',
DATEDIFF(DAY, T2.DocDate, GETDATE()) AS 'Dias'
FROM OCRD T0 INNER JOIN OSLP T1 ON T0.[SlpCode] = T1.[SlpCode]
INNER JOIN OINV T2 ON T0.CardCode= T2.CardCode
WHERE DATEDIFF(DAY, T2.DocDate, GETDATE()) > 2 and T2.[DocDate] BETWEEN '[%0]' AND '[%1]'
Hola amigo, espero haber entendido bien, te refieres a esto?
declare @dias as int
set @dias=[%0]
SELECT
T0.[CardCode],
T0.[CardName],
T0.[City],
T0.[Phone1],
T0.[Phone2],
T0.[E_MaiL],
T0.[Address],
T1.[SlpName],
T2.[DocNum],
T2.[DocDate],
DATENAME (WEEKDAY,T2.[DocDate]) AS 'Dia de Facturación',
DATEDIFF(DAY, T2.DocDate, GETDATE()) AS 'Dias'
FROM OCRD T0
INNER JOIN OSLP T1 ON T0.[SlpCode] = T1.[SlpCode]
INNER JOIN OINV T2 ON T0.CardCode= T2.CardCode
WHERE DATEDIFF(DAY, T2.DocDate, GETDATE())=@dias
Hola @Ricardo_Quiro, gracias por responder si asi como me lo muestra estaría bien, pero necesito que cuando se ejecute la consulta este solicite que ingrese la fecha inicial y final junto con el dia, estilo asi te dejo la imagen.
De esta forma seria genial pero hace falta que me de la opcion de colocarle el rango o los días de consulta.
Bien @GiancarloB, sólo sería agregarlo al criterio de selección.
declare @docini as datetime
declare @docfin as datetime
declare @dias as int
set @docini=[%0]
set @docfin=[%1]
set @dias=[%2]
SELECT
T0.[CardCode],
T0.[CardName],
T0.[City],
T0.[Phone1],
T0.[Phone2],
T0.[E_MaiL],
T0.[Address],
T1.[SlpName],
T2.[DocNum],
T2.[DocDate],
DATENAME (WEEKDAY,T2.[DocDate]) AS 'Dia de Facturación',
DATEDIFF(DAY, T2.DocDate, GETDATE()) AS 'Dias'
FROM OCRD T0
INNER JOIN OSLP T1 ON T0.[SlpCode] = T1.[SlpCode]
INNER JOIN OINV T2 ON T0.CardCode= T2.CardCode
WHERE DATEDIFF(DAY, T2.DocDate, GETDATE())=@dias
and T2.[DocDate] BETWEEN @docini AND @docfin
[Microsoft][SQL Server Native Client 11.0][SQL Server]Conversion failed when converting date and/or time from chacter string. ‘Alertas recibidas’ (OAIB)
@GiancarloB no consideré las comillas simples, se me pasó,
declare @docini as datetime
declare @docfin as datetime
declare @dias as int
set @docini='[%1]'
set @docfin='[%2]'
set @dias='[%3]'
SELECT
T0.[CardCode],
T0.[CardName],
T0.[City],
T0.[Phone1],
T0.[Phone2],
T0.[E_MaiL],
T0.[Address],
T1.[SlpName],
T2.[DocNum],
T2.[DocDate],
DATENAME (WEEKDAY,T2.[DocDate]) AS 'Dia de Facturación',
DATEDIFF(DAY, T2.DocDate, GETDATE()) AS 'Dias'
FROM OCRD T0
INNER JOIN OSLP T1 ON T0.[SlpCode] = T1.[SlpCode]
INNER JOIN OINV T2 ON T0.CardCode= T2.CardCode
WHERE DATEDIFF(DAY, T2.DocDate, GETDATE())=@dias
or T2.[DocDate] BETWEEN
case when @docini=''then '' else @docini end AND
case when @docfin=''then '' else @docfin end
Hola @Ricardo_Quiro, hice lo de las comillas y no me habia funcionado, ejecute lo que me envias pero me sale el error, no entiendo gracias por tu ayuda.
@SidV, muchas gracias por responder, mira este es el error, gracias por tu ayuda
Slds
1). [Microsoft][SQL Server Native Client 11.0][SQL Server]Must specify table to select from. 2). [Microsoft][SQL Server Native Client 11.0][SQL Server]Statement ‘Alertas recibidas’ (OAIB) (s) could not be prepared.
A @Ricardo_Quiro se le pasaron algunos corchetes en los nombres de campo.
Prueba a ver si esto soluciona el error y si es así marca su respuesta como solución:
declare @docini as datetime
declare @docfin as datetime
declare @dias as int
set @docini='[%1]'
set @docfin='[%2]'
set @dias='[%3]'
SELECT
T0.[CardCode],
T0.[CardName],
T0.[City],
T0.[Phone1],
T0.[Phone2],
T0.[E_MaiL],
T0.[Address],
T1.[SlpName],
T2.[DocNum],
T2.[DocDate],
DATENAME (WEEKDAY,T2.[DocDate]) AS 'Dia de Facturación',
DATEDIFF(DAY, T2.[DocDate], GETDATE()) AS 'Dias'
FROM OCRD T0
INNER JOIN OSLP T1 ON T0.[SlpCode] = T1.[SlpCode]
INNER JOIN OINV T2 ON T0.[CardCode] = T2.[CardCode]
WHERE DATEDIFF(DAY, T2.[DocDate], GETDATE())=@dias
or T2.[DocDate] BETWEEN
case when @docini=''then '' else @docini end AND
case when @docfin=''then '' else @docfin end