问题描述
如下图,两个简单的子查询,拼接后出现schema T708不存在的错误
软件:smartbi v7;华为高斯数据库主备版

问题分析
下述语句在navicat中执行正常,但在smartbi中却报错
SELECT a.ds ,a.esnq,b.esdb //没有给字段别名
FROM
(
SELECT ds,count(*) AS esnq
FROM lsksmlydb
WHERE dbsj<'2023-01-01'
GROUP BY ds
ORDER BY ds
) a
LEFT JOIN
(
SELECT ds,count(*) AS esdb
FROM lsksmlydb
WHERE dbsj>='2024-01-01'
GROUP BY ds
ORDER BY ds
) b
on a.ds=b.ds
ORDER BY a.ds
观察报错截图,smartbi主动给我原始的sql语句的外面多套了一层:
select T708.a.ds as F723,T708. a.esng as F724,T708.b.esdb as F725 from (..........) T708
因此问题在于外面加的这层东西身上。
经过别人的提醒,当前版本高斯数据库是不支持大写的,除了select 、from、left join等查询关键字。
所以很可能是smartbi自作主张给原始sql套了一层大写的别名后导致高斯数据库识别不了。
又已知,以前的多层嵌套的sql能正常在smartbi执行,对比了一下发现能执行的在原sql最外层都给字段加了小写别名。
此时可以确定,smartbi 在遇到有子查询的sql语句时,如果发现最外层的字段没有

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



