Hola buenas Tardes Amigos,
quiero solicitar su apoyo para poder saber que cual es error que me muestra en el siguiente query que estoy creando.
Syntax error or access violation;257 sql syntax error: incorrect syntax near “T0”: line 13 col 15 ‘’ (ECM2) (at pos 384)
SELECT
YEAR(T0.“DocDate”) as “Año”
,Month(T0.“DocDate”) as “Mes”
,T0.“CardCode” as “#Cliente”
,T0.“CardName” as “Nombre”
,SUM(T0.“DocTotal”) as “Total Facturado”
FROM
OINV T0
WHERE
T0.“CANCELED” = ‘N’
AND T0.“DocDate” >=[%0] AND T0.“DocDate” <=[%1]
T0.“CardCode”= [%2]
GROUP BY
YEAR(T0.“DocDate”)
,MONTH(T0.“DocDate”)
,T0.“CardCode”
,T0.“CardName”
ORDER BY
T0.“CardCode”
Hola,
Me parece que la solución es esta:
SELECT
YEAR(T0."DocDate") AS "Año",
MONTH(T0."DocDate") AS "Mes",
T0."CardCode" AS "#Cliente",
T0."CardName" AS "Nombre",
SUM(T0."DocTotal") AS "Total Facturado"
FROM
OINV T0
WHERE
T0."CANCELED" = 'N'
AND T0."DocDate" >= [%0]
AND T0."DocDate" <= [%1]
AND T0."CardCode" = '[%2]'
GROUP BY
YEAR(T0."DocDate"),
MONTH(T0."DocDate"),
T0."CardCode",
T0."CardName"
ORDER BY
T0."CardCode";
Había una falta de AND
antes de la condición “T0.“CardCode” = ‘[%2]’” y unas comillas sencillas en ‘[%2]’.
Nosotros usamos una consulta similar, pero añadiendo los abonos en negativo, y las facturas de anticipo
SELECT * FROM
( SELECT T0."DocNum", T0."DocDate", ... FROM OINV T0 INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode" INNER JOIN OCTG T2 ON T0."GroupNum" = T2."GroupNum" WHERE T0."CANCELED" ='N'
UNION ALL
SELECT T0."DocNum", T0."DocDate", ... FROM ORIN T0 INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode" INNER JOIN OCTG T2 ON T0."GroupNum" = T2."GroupNum" WHERE T0."CANCELED" ='N'
UNION ALL
SELECT T0."DocNum", T0."DocDate", ... 0 - T0."DocTotal", 0 - (T0."DocTotal" - T0."VatSum") AS "Total Base Imponible",
...FROM ODPI T0 INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode" INNER JOIN OCTG T2 ON T0."GroupNum" = T2."GroupNum" WHERE T0."CANCELED" ='N'
)
ORDER BY "DocDate"
Un saludo
3 Me gusta
HOLA @Jesus_Gomez , muchas gracias por tu apoyo me sirvió mucho para otras consultas que estoy generando.
y agradecido con la consulta que tienes solo una duda por que utilizas … antes de un from
ya que me muestra el siguiente error
Syntax error or access violation;257 sql syntax error: incorrect syntax near "...": line 2 col 37 '' (ECM2) (at pos 51)
Hola @sergio9 , en ‘…’ tendrías que poner los campos que necesitas, por ejemplo nuestra consulta es esta.
SELECT *
FROM (
SELECT
T0."DocNum",
T0."DocDate",
T0."ObjType",
T0."CardCode",
T0."CardName",
T0."DocTotal",
(T0."DocTotal" - T0."VatSum") AS "Total Base Imponible",
T0."PeyMethod",
T2."PymntGroup",
T0."LicTradNum"
FROM OINV T0
INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode"
INNER JOIN OCTG T2 ON T0."GroupNum" = T2."GroupNum"
WHERE T0."CANCELED" = 'N'
AND (T0."CardCode" = '[%2]' OR '[%2]' = '')
AND (T0."DocDate" >= [%0] OR '[%0]' = '')
AND (T0."DocDate" <= [%1] OR '[%1]' = '')
UNION ALL
SELECT
T0."DocNum",
T0."DocDate",
T0."ObjType",
T0."CardCode",
T0."CardName",
0 - T0."DocTotal",
0 - (T0."DocTotal" - T0."VatSum") AS "Total Base Imponible",
T0."PeyMethod",
T2."PymntGroup",
T0."LicTradNum"
FROM ORIN T0
INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode"
INNER JOIN OCTG T2 ON T0."GroupNum" = T2."GroupNum"
WHERE T0."CANCELED" = 'N'
AND (T0."CardCode" = '[%2]' OR '[%2]' = '')
AND (T0."DocDate" >= [%0] OR '[%0]' = '')
AND (T0."DocDate" <= [%1] OR '[%1]' = '')
UNION ALL
SELECT
T0."DocNum",
T0."DocDate",
T0."ObjType",
T0."CardCode",
T0."CardName",
0 - T0."DocTotal",
0 - (T0."DocTotal" - T0."VatSum") AS "Total Base Imponible",
T0."PeyMethod",
T2."PymntGroup",
T0."LicTradNum"
FROM ODPI T0
INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode"
INNER JOIN OCTG T2 ON T0."GroupNum" = T2."GroupNum"
WHERE T0."CANCELED" = 'N'
AND (T0."CardCode" = '[%2]' OR '[%2]' = '')
AND (T0."DocDate" >= [%0] OR '[%0]' = '')
AND (T0."DocDate" <= [%1] OR '[%1]' = '')
)
ORDER BY "DocDate";
Nota:OR '[%X]' = ''
**: Permite que el filtro se ignore si el parámetro correspondiente ([%0]
, [%1]
o [%2]
) está vacío.
Un saludo