You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

提取13个月月度交易及数量数据SQL报错求助

解决DBISAM SQL解析错误(Error #11949)的建议

嘿,我帮你分析下这个问题:你遇到的Error #11949是因为DBISAM的SQL语法和你熟悉的SQL Server不一样,它不支持GETDATE()和你写的那种DATEADD用法,导致解析SQL的时候卡壳了。

错误原因详解

你原SQL里的GETDATE()是SQL Server专属函数,DBISAM不认;另外DBISAM的DATEADD函数要求第一个参数(时间间隔)必须是带引号的字符串(比如'month'),而你直接写了MONTH,这也会让解析器混乱,所以才抛出了“Expected end of statement but instead found (”的错误。

修正后的基础查询SQL

先把获取日期的部分改成DBISAM支持的写法,这样就能正常查询最近13个月的交易数据了:

SELECT ST.TXDATE, ST.CODE, ST.QUANTITY 
FROM StocTran ST 
WHERE ST.TXDATE >= DATEADD('month', -13, CURRENT_DATE) 
ORDER BY ST.TXDATE

如果CURRENT_DATE在你的DBISAM版本里不好使,换成TODAY()试试:

SELECT ST.TXDATE, ST.CODE, ST.QUANTITY 
FROM StocTran ST 
WHERE ST.TXDATE >= DATEADD('month', -13, TODAY()) 
ORDER BY ST.TXDATE

按月拆分数据的扩展写法

既然你提到要按月拆分数据,这里给你加了分组统计的逻辑,把交易按年份、月份和代码归类,还计算了每月的总数量,正好对应表头需求:

SELECT 
    YEAR(ST.TXDATE) AS 交易年份,
    MONTH(ST.TXDATE) AS 交易月份,
    ST.CODE AS 交易代码,
    SUM(ST.QUANTITY) AS 月度总数量
FROM StocTran ST 
WHERE ST.TXDATE >= DATEADD('month', -13, CURRENT_DATE) 
GROUP BY YEAR(ST.TXDATE), MONTH(ST.TXDATE), ST.CODE
ORDER BY 交易年份, 交易月份, ST.CODE

内容的提问来源于stack exchange,提问作者Griphon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:24:41