从Mysql迁移到Sybase数据库后,我必须重写一些代码。不幸的是,我找不到正确的方法,我举了其中一个代码的简短示例,它是由Business Object Universe设计人员自动编写的。主要是我想了解如何正确地更改这些右= *或左* =连接,以便我自己更改其他代码。原因是Sybase不允许一次选择使用ANSI和Transact-SQL。
试图将其仅更改为外部联接,但结果不正确,因为它提供了太多数据。
SELECT DISTINCT
Y15YVF_FLEET_P.FLEET_NUM,
AVG(Y15YVF_INVOICE.REVAL),
Y15YVF_FLEET_P.LCTYP,
Y15YVF_FLEET_P.DIVISION
FROM
Y15YVF_CONTRACT INNER JOIN Y15YVF_FLEET_A ON (Y15YVF_FLEET_A.MANDT=*Y15YVF_CONTRACT.MANDT and Y15YVF_FLEET_A.FLEET_NUM=*Y15YVF_CONTRACT.FLEET_NUM and Y15YVF_FLEET_A.CTNR=*Y15YVF_CONTRACT.CTNR)
INNER JOIN Y15YVF_VEHICLES ON (Y15YVF_VEHICLES.FLEET_NUM=Y15YVF_FLEET_A.FLEET_NUM and Y15YVF_VEHICLES.MANDT=Y15YVF_FLEET_A.MANDT)
INNER JOIN Y15YVF_FLEET_P ON (Y15YVF_VEHICLES.FLEET_NUM=Y15YVF_FLEET_P.FLEET_NUM and Y15YVF_VEHICLES.MANDT=Y15YVF_FLEET_P.MANDT)
INNER JOIN Y15YVF_INVOICE ON (Y15YVF_FLEET_A.MANDT=*Y15YVF_INVOICE.MANDT and Y15YVF_FLEET_A.FLEET_NUM=*Y15YVF_INVOICE.FLEET_NUM)
WHERE
(
Y15YVF_INVOICE.REDAT >= '20040601'
AND Y15YVF_VEHICLES.MANDT != @variable('Stichtag:')
AND Y15YVF_FLEET_A.OWNSH = 'L'
AND Y15YVF_CONTRACT.LEABEG != '00000000'
)
GROUP BY
Y15YVF_FLEET_P.FLEET_NUM,
Y15YVF_FLEET_P.LCTYP,
Y15YVF_FLEET_P.DIVISION
我还添加了指向示例数据的链接,因为有太多数据不确定是否足以进行检查: Data
答案 0 :(得分:0)
据我所知,你想要
Aspect Fit / Aspect Fill
使用表名和示例数据比较容易分辨。