我有以下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: 运行时缺少表达式错误。
这可能是什么原因?
答案 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)
,因为您已经知道它已经符合比例尺/精度约束,所以我认为这首先是转换/投射该点。