1

我有以下查询,它出现了一个错误

SELECT CRM_PRESUPUESTOS.Fecha_Alta, CRM_PRESUPUESTOS.ID_VendedorAsignado, Sum([Precio]*(100-[CRM_PresupuestosDetalles].[Bonif])/100*[CRM_PresupuestosDetalles].[Cantidad]) AS LineaNeto
FROM CRM_PRESUPUESTOS RIGHT JOIN CRM_PresupuestosDetalles ON CRM_PRESUPUESTOS.ID_Presupuesto = CRM_PresupuestosDetalles.ID_Presupuesto
GROUP BY CRM_PRESUPUESTOS.Fecha_Alta, CRM_PRESUPUESTOS.ID_VendedorAsignado
HAVING ((DATE((CRM_PRESUPUESTOS.Fecha_Alta))=CurDate()));

错误是

[Err] 1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '[Precio] (100-[CRM_PresupuestosDetalles].[Bonif])/100 [CRM_PresupuestosDetalles‌​]'附近使用正确的语法

我怎样才能解决这个问题?问题可能是我正在使用 Access 构建它们

4

2 回答 2

1

方括号 ,[ ]是 t-sql 特定的。它们告诉解析器包含的文本是一个字符串,并且可以防止您可能错误地使用 t-sql 保留字。MySql 类似的做法是使用反引号:`

SELECT CRM_PRESUPUESTOS.Fecha_Alta, 
CRM_PRESUPUESTOS.ID_VendedorAsignado, 
Sum(`Precio`*(100-`CRM_PresupuestosDetalles`.`Bonif`)/100*`CRM_PresupuestosDetalles`.`Cantidad`) AS LineaNeto
FROM CRM_PRESUPUESTOS RIGHT JOIN CRM_PresupuestosDetalles ON CRM_PRESUPUESTOS.ID_Presupuesto = CRM_PresupuestosDetalles.ID_Presupuesto
GROUP BY CRM_PRESUPUESTOS.Fecha_Alta, CRM_PRESUPUESTOS.ID_VendedorAsignado
HAVING ((DATE((CRM_PRESUPUESTOS.Fecha_Alta))=CurDate()));
于 2012-12-04T18:22:42.167 回答
0

试试这个::

SELECT 
CRM_PRESUPUESTOS.Fecha_Alta, 
CRM_PRESUPUESTOS.ID_VendedorAsignado, 
Sum(Precio*(100-CRM_PresupuestosDetalles.Bonif/100*CRM_PresupuestosDetalles.Cantidad) AS LineaNeto

FROM CRM_PRESUPUESTOS RIGHT 
JOIN CRM_PresupuestosDetalles ON CRM_PRESUPUESTOS.ID_Presupuesto = CRM_PresupuestosDetalles.ID_Presupuesto

GROUP BY CRM_PRESUPUESTOS.Fecha_Alta, CRM_PRESUPUESTOS.ID_VendedorAsignado
HAVING DATEDIFF(CRM_PRESUPUESTOS.Fecha_Alta, CurDate)=0
于 2012-12-04T18:21:28.553 回答