Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Concatenar Variables de una sentencia SQL

Estas en el tema de Concatenar Variables de una sentencia SQL en el foro de SQL Server en Foros del Web. Buenos días foro estoy realizando una consulta para sacar mis inventarios y movimientos por hora y por fecha. ya tengo la consulta la cual si ...
  #1 (permalink)  
Antiguo 10/05/2016, 10:29
 
Fecha de Ingreso: abril-2015
Mensajes: 130
Antigüedad: 9 años
Puntos: 0
consulta de inventario por hora y fecha

Buenos días foro

estoy realizando una consulta para sacar mis inventarios y movimientos por hora y por fecha.

ya tengo la consulta la cual si me muestra los movimientos. pero por ejemplo si quiero saber los movimientos de las 22:00 horas asta las 7:30 horas me manda cantidades en 0 y si las hago de las 7:30 a las 22:00 horas si me las da.

es decir cuando selecciono un rango de un solo día si me muestra los daos pero si selecciono un horario que comienza en un día y termina en el siguiente no me muestra nada.

esta es mi consulta.
Código SQL:
Ver original
  1. /* Select * From [dbo].[OWTR] T0 */
  2. DECLARE @FecIni DateTime
  3. DECLARE @FecFin DateTime
  4. DECLARE @HorIni INT
  5. DECLARE @HorFin INT
  6. /* Where */
  7. SELECT @FecIni /* T0.[DocDate] */= '[%0]'
  8. /* And */
  9. SELECT @FecFin /* T0.[DocDate] */= '[%1]'
  10. /* And */
  11. SELECT @HorIni /* T0.[DocTime] */= '[%2]'
  12. /* And */
  13. SELECT @HorFin /* T0.[DocTime] */= '[%3]'
  14.  
  15.  
  16. SELECT DISTINCT T.ItemCode, T.ItemName,
  17.  
  18.  
  19. A.OnHand +
  20. IsNull((SELECT SUM(B.Quantity)
  21. FROM [dbo].RPD1 B INNER JOIN [dbo].ORPD A2 ON B.DocEntry = A2.DocEntry
  22. WHERE B.ItemCode=T.ItemCode AND A2.DocDate BETWEEN @FecIni AND @FecFin AND A2.DocTime BETWEEN @HorIni AND @HorFin AND A2.Canceled='N'),0) +
  23. ISNULL((SELECT SUM(Y.Quantity)
  24. FROM [dbo].OWTR X INNER JOIN [dbo].WTR1 Y ON Y.DocEntry=X.DocEntry
  25. WHERE Y.ItemCode=T.ItemCode AND X.DocDate BETWEEN @FecIni AND @FecFin AND DocTime BETWEEN @HorIni AND @HorFin AND Y.FromWhsCod = 'MP' AND  Y.WhsCode = 'WIP'),0)AS 'stock historial',
  26.  
  27.  
  28.  
  29.  
  30. IsNull((SELECT SUM(B.Quantity)
  31. FROM [dbo].PDN1 B INNER JOIN [dbo].OPDN A1 ON B.DocEntry = A1.DocEntry
  32. WHERE B.ItemCode=T.ItemCode AND A1.DocDate BETWEEN @FecIni AND @FecFin AND A1.DocTime BETWEEN @HorIni AND @HorFin AND A1.Canceled='N'),0) AS 'Entradas de Mescancia',
  33. IsNull((SELECT SUM(B.Quantity)
  34. FROM [dbo].RPD1 B INNER JOIN [dbo].ORPD A2 ON B.DocEntry = A2.DocEntry
  35. WHERE B.ItemCode=T.ItemCode AND A2.DocDate BETWEEN @FecIni AND @FecFin AND A2.DocTime BETWEEN @HorIni AND @HorFin AND A2.Canceled='N'),0) AS'Devoluciones',
  36. ISNULL((SELECT SUM(Y.Quantity)
  37. FROM [dbo].OWTR X INNER JOIN [dbo].WTR1 Y ON Y.DocEntry=X.DocEntry
  38. WHERE Y.ItemCode=T.ItemCode AND X.DocDate BETWEEN @FecIni AND @FecFin AND DocTime BETWEEN @HorIni AND @HorFin AND Y.FromWhsCod = 'MP' AND  Y.WhsCode = 'WIP'),0)AS 'Cantidad Entregada',
  39. A.OnHand AS 'Inventario'
  40. /*ISNULL((SELECT SUM(Y.Quantity)
  41. FROM [dbo].OIGE X INNER JOIN [dbo].IGE1 Y ON Y.DocEntry=X.DocEntry
  42. WHERE Y.ItemCode=T.ItemCode AND X.DocDate >=@FecIni AND X.DocDate<= @FecFin and Y.WhsCode = 'WIP' AND Y.AcctCode = '1200.2.1' AND X.Comments LIKE '%Nº-OT%'),0) as'Cantidad Consumida'*/
  43. FROM OITM T INNER JOIN OITW A ON T.ItemCode = A.ItemCode
  44. WHERE T.SellItem = 'N' AND T.PrchSeItem = 'Y' AND A.WhsCode = 'MP'
  45. GROUP BY T.ItemCode, T.ItemName,A.OnHand
  46. ORDER BY T.ItemCode

Última edición por gnzsoloyo; 10/05/2016 a las 10:46 Razón: Horrible código sin etiquetar. Usar HIGHLIGHT, por favor...
  #2 (permalink)  
Antiguo 10/05/2016, 10:34
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: consulta de inventario por hora y fecha

recomendacion, en lugar de usar el between usa el >= y < cuando hagas una comparacion de fechas, porque muchas veces el between se va al final del dia de comparacion, otra cosa trata de usar los parentesis en la parte del where, porque tambien existe una presedencia para los operadores dentro del where en este caso se haria esto:

Primero analiza esta sentencia:
Código SQL:
Ver original
  1. Y.ItemCode=T.ItemCode AND X.DocDate BETWEEN @FecIni AND @FecFin
Si retorna true analiza la siguiente
Código SQL:
Ver original
  1. DocTime BETWEEN @HorIni AND @HorFin AND Y.FromWhsCod = 'MP'
en este caso quieres que se tome diferente por lo que se recomienda el uso de parentesis:

Código SQL:
Ver original
  1. WHERE Y.ItemCode=T.ItemCode AND (X.DocDate BETWEEN @FecIni AND @FecFin AND DocTime BETWEEN @HorIni AND @HorFin) AND Y.FromWhsCod = 'MP' AND Y.WhsCode = 'WIP
Para que te respete lo que necesitas :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 10/05/2016 a las 10:39
  #3 (permalink)  
Antiguo 10/05/2016, 15:26
 
Fecha de Ingreso: abril-2015
Mensajes: 130
Antigüedad: 9 años
Puntos: 0
Respuesta: consulta de inventario por hora y fecha

estoy realizando la agrupación que me comentas pero no me devuelve nada
  #4 (permalink)  
Antiguo 11/05/2016, 13:40
 
Fecha de Ingreso: abril-2015
Mensajes: 130
Antigüedad: 9 años
Puntos: 0
Concatenar Variables de una sentencia SQL

buenas tardes foro estoy realizando una consulta en sql para poder traer datos de un inventario por fecha y hora. pero no se como puedo manejar la parte del concatenado en mis parámetros ya que yo estoy realizando una concatenación en la parte del where

este es mi codigo
Código SQL:
Ver original
  1. /* Select * From [dbo].[OWTR] T0 */
  2. DECLARE @FechaHoraInicio INT
  3. DECLARE @FechaHoraFin INT
  4. /* Where */
  5. SELECT @FechaHoraInicio /* T0.[DocDate],T0.[DocTime]*/= '[%0]'
  6. /* And */
  7. SELECT @FechaHoraFin /* T0.[DocDate],T0.[DocTime] */= '[%1]'
  8.  
  9. SELECT DISTINCT T.ItemCode, T.ItemName,
  10.  
  11. IsNull((SELECT SUM(B.Quantity)
  12. FROM [dbo].PDN1 B INNER JOIN [dbo].OPDN A1 ON B.DocEntry = A1.DocEntry
  13. WHERE B.ItemCode=T.ItemCode AND A1.Canceled='N' AND CONVERT(nvarchar(8),A1.DocDate,112) + RIGHT('0000' + CONVERT(nvarchar(4),A1.DocTime),4) BETWEEN @FechaHoraInicio AND @FechaHoraFin),0) AS 'Entradas de Mescancia',
  14.  
  15. IsNull((SELECT SUM(B.Quantity)
  16. FROM [dbo].RPD1 B INNER JOIN [dbo].ORPD A2 ON B.DocEntry = A2.DocEntry
  17. WHERE B.ItemCode=T.ItemCode AND A2.Canceled='N' AND CONVERT(nvarchar(8),A2.DocDate,112) + RIGHT('0000' + CONVERT(nvarchar(4),A2.DocTime),4) BETWEEN @FechaHoraInicio AND @FechaHoraFin ),0) AS'Devoluciones',
  18.  
  19. ISNULL((SELECT SUM(Y.Quantity)
  20. FROM [dbo].OWTR X INNER JOIN [dbo].WTR1 Y ON Y.DocEntry=X.DocEntry
  21. WHERE Y.ItemCode=T.ItemCode AND Y.FromWhsCod = 'MP' AND  Y.WhsCode = 'WIP' AND CONVERT(nvarchar(8),X.DocDate,112) + RIGHT('0000' + CONVERT(nvarchar(4),X.DocTime),4) BETWEEN @FechaHoraInicio AND @FechaHoraFin),0)AS 'Cantidad Entregada',
  22. A.OnHand AS 'Inventario'
  23.  
  24. FROM OITM T INNER JOIN OITW A ON T.ItemCode = A.ItemCode
  25. WHERE T.SellItem = 'N' AND T.PrchSeItem = 'Y' AND A.WhsCode = 'MP'
  26. GROUP BY T.ItemCode, T.ItemName,A.OnHand
  27. ORDER BY T.ItemCode
  #5 (permalink)  
Antiguo 11/05/2016, 13:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Concatenar Variables de una sentencia SQL

Dos cosas:
1) Por favor, usa los Highlight que tienes disponibles cuando postees código, de lo contrario queda medio ilegible.

2) ¿En que se diferencia este tema del que ya abriste antes? me refiero a: http://www.forosdelweb.com/f87/consu...fecha-1151997/
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 11/05/2016, 15:31
 
Fecha de Ingreso: abril-2015
Mensajes: 130
Antigüedad: 9 años
Puntos: 0
Respuesta: Concatenar Variables de una sentencia SQL

cambie la consulta y la estoy realizando con Concatenar Variables
  #7 (permalink)  
Antiguo 11/05/2016, 15:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Concatenar Variables de una sentencia SQL

Pero no cambiaste la meta, por lo que en realidad es una continuidad o evolución del tema anterior y no una pregunta nueva.

Además duplicaste el post en el foro de Programación General, algo totalmente prohibido por las PDU de FDW.

Lo siento, pero para mantener la consistencia del tema, son fusionados.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 11/05/2016, 15:47
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Concatenar Variables de una sentencia SQL

Q version de sql usas??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: concatenar, query, sentencia, sql, sql-sentencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:59.