GBase 8s
适配迁移
文章

以下SQL语句在达梦、人大数据库可以执行通过,但南大数据库无法兼容,语法适配

发表于2024-03-11 14:52:54124次浏览8个评论

SELECT
                      acs.DEPT_ID,
                      SUM(IF ((instr(acsd.BRAND,'自建') > 0 AND (acsd.SUM + acsd.SUM_SYSTEM) = 0 AND (acsd.PHYSICS_SERVER_ROUTE IS NULL OR acsd.PHYSICS_SERVER_ROUTE = '')
                      AND (acsd.CLOUD_SUPPLIER IS NULL OR acsd.CLOUD_SUPPLIER = '')
                      AND (acsd.COMPUTE_RESOURCES_SITUATION + acsd.STORE_RESOURCES_SITUATION + acsd.NETWORK_BROADBAND + acsd.RENT_YEAR) = 0)
                      OR (acsd.SUM + acsd.SUM_SYSTEM) > 0, '1', '0')) cloudSelfSecret
              FROM AK_CLOUD_SUMMARY acs LEFT JOIN AK_CLOUD_SUMMARY_DATA acsd ON acs.ID = acsd.CLOUD_SUMMARY_ID AND acsd.SECRET = '是'
              WHERE acs.DEL_FLAG = '0' AND acs.STATUS = '3'
              GROUP BY acs.DEPT_ID

评论

登录后才可以发表评论
用户头像
远方发表于 2年前
IF函数换成case when用法把
用户头像
远方发表于 2年前
SELECT
acs.DEPT_ID,
SUM( CASE WHEN ( instr( acsd.BRAND, '自建' )> 0 AND( acsd.SUM + acsd.SUM_SYSTEM )= 0 AND( acsd.PHYSICS_SERVER_ROUTE IS NULL OR acsd.PHYSICS_SERVER_ROUTE = '' ) AND( acsd.CLOUD_SUPPLIER IS NULL OR acsd.CLOUD_SUPPLIER = '' ) AND( acsd.COMPUTE_RESOURCES_SITUATION + acsd.STORE_RESOURCES_SITUATION + acsd.NETWORK_BROADBAND + acsd.RENT_YEAR )= 0 ) OR( acsd.SUM + acsd.SUM_SYSTEM )> 0 THEN '1' ELSE '0' END) cloudSelfSecret
FROM
AK_CLOUD_SUMMARY acs
LEFT JOIN AK_CLOUD_SUMMARY_DATA acsd ON
acs.ID = acsd.CLOUD_SUMMARY_ID
AND acsd.SECRET = '是'
WHERE
acs.DEL_FLAG = '0'
AND acs.STATUS = '3'
GROUP BY
acs.DEPT_ID
GBase用户15406发表于 2年前
@远方:我也是刚按照case when改了,正说删帖子呀,谢谢了。
用户头像
远方发表于 2年前
修改了一下 看看结果集是否正确
用户头像
liaosnet发表于 2年前
IF是核心关键字,没有对应IF()函数。故只能改写成case when或者decode之类的写法。
GBase用户15406发表于 2年前
@liaosnet:好的,谢谢了已解决
用户头像
levvel发表于 6个月前
海纳百川有容乃大,壁立千仞无欲则刚
茵陈发表于 2个月前
继续努力