如何编写与oracle数据库兼容的查询

时间:2014-09-24 08:50:18

标签: sql database oracle

我面临将sql查询转换为oracle的问题。实际上我是oracle db的新手。

 SELECT TI1.FOLDERRSN, DBO.F_OPENTAX_PROPERTYROLL_FOLDER(TI1.FOLDERRSN) ROLL,
    TI1.DUEDATE DUEDATE, TI1.YEARFORBILLING,(TI1.SUMDUETAX + TI1.SUMPAIDTAX + TI1.SUMDUEPENALTY + TI1.SUMPAIDPENALTY) OUTSTANDING
    FROM  TAXINSTALLMENT TI1 WHERE (TI1.SUMDUETAX + TI1.SUMPAIDTAX + TI1.SUMDUEPENALTY + TI1.SUMPAIDPENALTY) > 0
    AND EXISTS (SELECT * FROM TAXINSTALLMENT TI2 WHERE YEAR(TI2.DUEDATE) BETWEEN 1980 AND   YEAR(GETDATE()) - 5  AND (TI2.SUMDUETAX + TI2.SUMPAIDTAX + TI2.SUMDUEPENALTY + TI2.SUMPAIDPENALTY) > 0
    AND TI2.FOLDERRSN = TI1.FOLDERRSN )  ORDER BY TI1.FOLDERRSN, DUEDATE DESC

任何人都允许我改变oracle的想法。

由于

1 个答案:

答案 0 :(得分:1)

该语句在Schema DBO中使用函数F_OPENTAX_PROPERTYROLL_FOLDER(TI1.FOLDERRSN)。确保您已在该数据库架构中安装该功能,并已向相关用户或PUBLIC授予执行权。

编辑:此外,Oracle中没有YEAR功能。您必须将其替换为EXTRACT:EXTRACT(YEAR FROM TI2.DUEDATE)和GetDate():EXTRACT(YEAR FROM SYSDATE)