Anuncio

Colapsar
No hay anuncio todavía.

Consulta Query Manager (Fallo parametrización)

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Consulta Query Manager (Fallo parametrización)

    Buenos días a todos.

    Estoy practicando con el Query Manager y tengo una consulta:
    La cuestión es que cuando pongo así esta línea funciona correctamente:
    WHERE QUERY.DocDate>='09/04/2012' AND QUERY.DocDate<='15/04/2012'
    pero al intenter parametrizar la fecha me da un error..
    WHERE QUERY.DocDate>='[%0]' AND QUERY.DocDate<='[%1]'
    1). [Microsoft][SQL Server Native Client 10.0][SQL Server]La transacción 'Contratos de servicio' (OCTR) (id. de proceso 57) quedó en interbloqueo en bloqueo recursos con otro proceso y fue elegida como sujeto del interbloqueo. Ejecute de nuevo la transa..
    Os pongo abajo la consulta completa.
    Muchas gracias de antemano.

    SELECT
    QUERY.DocDate,
    SUM(QUERY.CANTIDAD) CANTIDAD,SUM(CANTIDAD/UND_CAJA) CAJAS,SUM((CANTIDAD%UND_CAJA)/UND_PACK) PACKS,SUM(CANTIDAD%UND_PACK) UNIDADES,
    CAST(SUM(B.U_IFG047) AS INT) BULTOS,COUNT(B.DocNum) NPEDIDOS
    FROM
    (
    SELECT A.DocDate, A.DocEntry, B.U_IFG021 MODELO,CAST(SUM(A.Quantity) AS INT) CANTIDAD,B.U_IFG027 UND_PACK,U_IFG025 UND_CAJA
    FROM DLN1 A
    inner join OITM B on a.ItemCode = b.ItemCode
    WHERE (B.U_IFG027 IS NOT NULL AND B.U_IFG025 IS NOT NULL)
    GROUP BY A.DocEntry,A.DocDate,B.U_IFG021,B.U_IFG027,U_IFG02 5
    ) QUERY
    INNER JOIN ODLN B ON B.DocEntry = QUERY.DocEntry
    WHERE QUERY.DocDate>='09/04/2012' AND QUERY.DocDate<='15/04/2012' AND B.U_IFG041='C'
    GROUP BY QUERY.DocDate

  • #2
    A nadie se le ocurre algo?

    Nadie tiene alguna idea de esto?
    Un saludo.

    Comentario


    • #3
      Originalmente publicado por saickot Ver Mensaje
      Buenos días a todos.

      Estoy practicando con el Query Manager y tengo una consulta:
      La cuestión es que cuando pongo así esta línea funciona correctamente:
      WHERE QUERY.DocDate>='09/04/2012' AND QUERY.DocDate<='15/04/2012'
      pero al intenter parametrizar la fecha me da un error..
      WHERE QUERY.DocDate>='[%0]' AND QUERY.DocDate<='[%1]'
      1). [Microsoft][SQL Server Native Client 10.0][SQL Server]La transacción 'Contratos de servicio' (OCTR) (id. de proceso 57) quedó en interbloqueo en bloqueo recursos con otro proceso y fue elegida como sujeto del interbloqueo. Ejecute de nuevo la transa..
      Os pongo abajo la consulta completa.
      Muchas gracias de antemano.

      SELECT
      QUERY.DocDate,
      SUM(QUERY.CANTIDAD) CANTIDAD,SUM(CANTIDAD/UND_CAJA) CAJAS,SUM((CANTIDAD%UND_CAJA)/UND_PACK) PACKS,SUM(CANTIDAD%UND_PACK) UNIDADES,
      CAST(SUM(B.U_IFG047) AS INT) BULTOS,COUNT(B.DocNum) NPEDIDOS
      FROM
      (
      SELECT A.DocDate, A.DocEntry, B.U_IFG021 MODELO,CAST(SUM(A.Quantity) AS INT) CANTIDAD,B.U_IFG027 UND_PACK,U_IFG025 UND_CAJA
      FROM DLN1 A
      inner join OITM B on a.ItemCode = b.ItemCode
      WHERE (B.U_IFG027 IS NOT NULL AND B.U_IFG025 IS NOT NULL)
      GROUP BY A.DocEntry,A.DocDate,B.U_IFG021,B.U_IFG027,U_IFG02 5
      ) QUERY
      INNER JOIN ODLN B ON B.DocEntry = QUERY.DocEntry
      WHERE QUERY.DocDate>='09/04/2012' AND QUERY.DocDate<='15/04/2012' AND B.U_IFG041='C'
      GROUP BY QUERY.DocDate

      SELECT
      QUERY.DocDate,
      SUM(QUERY.CANTIDAD) CANTIDAD,
      SUM(CANTIDAD/UND_CAJA) CAJAS,
      SUM((CANTIDAD%UND_CAJA)/UND_PACK) PACKS,
      SUM(CANTIDAD%UND_PACK) UNIDADES,
      CAST(SUM(B.U_IFG047) AS INT) BULTOS,
      COUNT(B.DocNum) NPEDIDOS
      FROM (SELECT A.DocDate,
      A.DocEntry,
      B.U_IFG021 MODELO,
      CAST(SUM(A.Quantity) AS INT) CANTIDAD,
      B.U_IFG027 UND_PACK,
      U_IFG025 UND_CAJA
      FROM DLN1 A inner join OITM B on a.ItemCode = b.ItemCode

      WHERE (B.U_IFG027 IS NOT NULL AND B.U_IFG025 IS NOT NULL)

      GROUP BY A.DocEntry,A.DocDate,B.U_IFG021,B.U_IFG027,U_IFG02 5) QUERYINNER JOIN ODLN B ON B.DocEntry = QUERY.DocEntry

      WHERE QUERY.DocDate>='09/04/2012' AND QUERY.DocDate<='15/04/2012'
      AND B.U_IFG041='C'

      GROUP BY QUERY.DocDate



      Prueba con esto podria resultar....

      WHERE T0.[DocDate] >=[%0] AND T0.[DocDate] <=[%1]

      Donde T0 es igual a la tabla que quieres consultar, osea cambiala...espero te sirva a mi me funciona asi

      Saludos

      Comentario


      • #4
        Originalmente publicado por saickot Ver Mensaje
        Buenos días a todos.

        Estoy practicando con el Query Manager y tengo una consulta:
        La cuestión es que cuando pongo así esta línea funciona correctamente:
        WHERE QUERY.DocDate>='09/04/2012' AND QUERY.DocDate<='15/04/2012'
        pero al intenter parametrizar la fecha me da un error..
        WHERE QUERY.DocDate>='[%0]' AND QUERY.DocDate<='[%1]'
        1). [Microsoft][SQL Server Native Client 10.0][SQL Server]La transacción 'Contratos de servicio' (OCTR) (id. de proceso 57) quedó en interbloqueo en bloqueo recursos con otro proceso y fue elegida como sujeto del interbloqueo. Ejecute de nuevo la transa..
        Os pongo abajo la consulta completa.
        Muchas gracias de antemano.

        SELECT
        QUERY.DocDate,
        SUM(QUERY.CANTIDAD) CANTIDAD,SUM(CANTIDAD/UND_CAJA) CAJAS,SUM((CANTIDAD%UND_CAJA)/UND_PACK) PACKS,SUM(CANTIDAD%UND_PACK) UNIDADES,
        CAST(SUM(B.U_IFG047) AS INT) BULTOS,COUNT(B.DocNum) NPEDIDOS
        FROM
        (
        SELECT A.DocDate, A.DocEntry, B.U_IFG021 MODELO,CAST(SUM(A.Quantity) AS INT) CANTIDAD,B.U_IFG027 UND_PACK,U_IFG025 UND_CAJA
        FROM DLN1 A
        inner join OITM B on a.ItemCode = b.ItemCode
        WHERE (B.U_IFG027 IS NOT NULL AND B.U_IFG025 IS NOT NULL)
        GROUP BY A.DocEntry,A.DocDate,B.U_IFG021,B.U_IFG027,U_IFG02 5
        ) QUERY
        INNER JOIN ODLN B ON B.DocEntry = QUERY.DocEntry
        WHERE QUERY.DocDate>='09/04/2012' AND QUERY.DocDate<='15/04/2012' AND B.U_IFG041='C'
        GROUP BY QUERY.DocDate
        Buenos días, saickot.

        Estoy intentando comprender qué es lo que hace tu consulta a la base de datos para poder ayudarte con el problema. Sinceramente, y sin ningún ánimo de ofender, dicha consulta es algo caótica, por lo que la he dividido en dos consultas siguiendo el siguiente orden: desde dentro hacia fuera. Este es el código de tu primera consulta tabulado:

        Código:
        SELECT
        	T0.DocDate,
        	T0.DocEntry,
        	T1.U_IFG021 MODELO,
        	CAST(SUM(T0.Quantity) AS INT) CANTIDAD,
        	T1.U_IFG027 UND_PACK,
        	/* Campo sin asignar a una tabla. */
        	U_IFG025 UND_CAJA
        FROM
        	DLN1 T0
        		INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode
        WHERE(
        	B.U_IFG027 IS NOT NULL AND
        	B.U_IFG025 IS NOT NULL
        )
        GROUP BY
        	A.DocEntry,
        	A.DocDate,
        	B.U_IFG021,
        	B.U_IFG027,
        	/* Número 5 al final de la línea desconocido. */
        	U_IFG02 5
        Como puedes observar, siguiendo el estándar de SAP, he cambiado los alias de las tablas DLN1 y de OITM por T0 y T1. Además, entre los símbolos /* y */ he introducido los comentarios que indican una inconsistencia en el código. Sería de agradecer que pudieras resolver todas las inconsistencias para seguir con la incidencia.

        Lo mismo ha pasado en la segunda consulta, también tabulada, que es la siguiente:

        Código:
        SELECT
        	T0.DocDate,
        	SUM(T0.CANTIDAD) CANTIDAD,
        	SUM(CANTIDAD/UND_CAJA) CAJAS,
        	SUM((CANTIDAD%UND_CAJA)/UND_PACK) PACKS,
        	SUM(CANTIDAD%UND_PACK) UNIDADES,
        	CAST(SUM(T1.U_IFG047) AS INT) BULTOS,
        	COUNT(T1.DocNum) NPEDIDOS
        FROM (...) T0
        	INNER JOIN ODLN T1 ON T1.DocEntry = T0.DocEntry
        WHERE
        	T0.DocDate>='09/04/2012' AND 
        	T0.DocDate<='15/04/2012' AND 
        	T1.U_IFG041='C'
        GROUP BY
        	T0.DocDate
        A pesar de comprender el código SQL, no consigo entender la finalidad de la consulta, ya que no sé cómo están declarados y qué almacenan los campos definidos por el usuario (aquellos que llevan U_ por delante).

        Estoy seguro que tu petición es sencilla y se puede resolver, por lo que me quedo a la espera de tu respuesta.

        Un saludo.

        Comentario

        Trabajando...
        X