创建视图时缺少表达式错误

时间:2018-10-16 12:10:20

标签: sql oracle

我有以下oracle查询来创建视图:

    CREATE VIEW uvw_Dashboard_Templates
    AS
    SELECT LL.ID
          ,LL.LoadDate
          ,LL.FileName
          ,LL.TemplateType
          ,LL.AnalystName
          ,LL.RecDate
          ,LL.CompanyID
          ,LL.CompanyName
          ,LL.Recommendation
          ,LL.Loaded
          ,LL.ErrorText
          ,CASE 
            WHEN LL.NewCompany = 1 AND LL.Loaded = 0 THEN 0
            ELSE LL.NewCompany END NewCompany
          ,RH.rec_date LastRecDate
          ,RH.rec_code LastRecCode
          ,CONVERT(NUMBER(1), CASE 
             WHEN LL.Loaded = 1 AND NVL(LL.Recommendation, 'Rec') <> 
             NVL(RH.rec_code,'LastRec') THEN 1
             ELSE 0 END) RecChanged
    FROM tblTemplates_LoadLog LL
    LEFT JOIN (
    SELECT company_id, rec_date, rec_code 
    FROM (
        SELECT company_id
            , rec_date
            , UPPER(rec_code) rec_code
            , ROW_NUMBER() OVER(PARTITION BY company_id ORDER BY rec_date DESC) RowNumber
        FROM tblRecHist            
        ) OrderedList
    WHERE RowNumber = 2) RH 
ON LL.CompanyID = RH.company_id

正在抛出

  

ORA-00936: 运行时缺少表达式错误。

这可能是什么原因?

2 个答案:

答案 0 :(得分:2)

更改此内容:

,CONVERT('1', CASE 

Oracle / PLSQL CONVERT函数将字符串从一个字符集转换为另一个字符集。 CONVERT(string1,char_set_to [,char_set_from])

您必须在那里输入字符串

答案 1 :(得分:1)

您似乎正在尝试使用SQL Server convert() function。 Oracle确实有自己的convert() function,但一点都不相关:

  

CONVERT将字符串从一个字符集转换为另一个字符集。

我可以看到与SQL Server函数最接近的等效项是强制转换:

      ,CAST(CASE 
         WHEN LL.Loaded = 1 AND NVL(LL.Recommendation, 'Rec') <> 
         NVL(RH.rec_code,'LastRec') THEN 1
         ELSE 0 END AS NUMBER(1)) RecChanged

描述视图会将列显示为NUMBER(1),因为您已经知道它已经符合比例尺/精度约束,所以我认为这首先是转换/投射该点。