sql如下:
经过测试,DATE_FORMAT(A12_T_1_.REPORT_DATE, ‘YYYYMMDD’) >= ‘20130101’
AND DATE_FORMAT(A12_T_1_.REPORT_DATE, ‘YYYYMMDD’) <= ‘20130106’
这两个条件里,任意去掉其中一个就可以查询,但是理论上这个sql是没有语法错误的,而且一定不是时间格式掩码错误,是不是达梦数据源本身不支持条件过多的嵌套查询?一旦条件多了就会解析失败?
SELECT
A12_T_1_.ORDER_LEVEL AS T_AE1_3_,
concat(A12_T_1_.PRODUCT_TYPE, AAT_T_2_.PRODUCT_TYPE) AS T_A88_4_,
DATE_FORMAT(A12_T_1_.REPORT_DATE, ‘YYYYMMDD’) AS T_AB4_5_,
SUM(A12_T_1_.ORDER_NUMBER) AS T_AE2_6_
FROM
(
SELECT
*
FROM
COMMON_TEST_DATA
) AS A12_T_1_
LEFT JOIN DW.COMMON_TEST_DATA AS AAT_T_2_ ON A12_T_1_.ORDER_ID = AAT_T_2_.ORDER_ID
WHERE
A12_T_1_.ORDER_LEVEL = ‘中级’
AND (
(
DATE_FORMAT(A12_T_1_.REPORT_DATE, ‘YYYYMMDD’) IN (‘20130104’, ‘20130105’)
)
OR (
DATE_FORMAT(A12_T_1_.REPORT_DATE, ‘YYYYMMDD’) >= ‘20130101’
AND DATE_FORMAT(A12_T_1_.REPORT_DATE, ‘YYYYMMDD’) <= ‘20130106’
)
)
GROUP BY
A12_T_1_.ORDER_LEVEL,
concat(A12_T_1_.PRODUCT_TYPE, AAT_T_2_.PRODUCT_TYPE),
DATE_FORMAT(A12_T_1_.REPORT_DATE, ‘YYYYMMDD’)
ORDER BY
T_AE1_3_ ASC,
T_A88_4_ ASC,
T_AB4_5_ ASC
LIMIT
0, 30000
我按照您下面给出的建表语句和查询语句操作的,没有出现问题,我这边使用了达梦8版本和达梦7测试,达梦7版本是DM Database Server x64 V7.6.1.60-Build(2020.06.02-122414)ENT ,可以使用 SELECT * FROM V$VERSION查询版本
报错信息和表列数据类型列一下,我在V7.6.0.197中测试DATE、DATETIME、TMIESTAMP类型都可以用DATE_FORMAT作为条件进行查询