2012-01-03 343 views
1

你能幫我知道什麼可能是我的SQL錯誤? 我有遺漏的表達錯誤,但我找不到錯誤。 非常感謝您提前。SQL錯誤:ORA-00936:缺少表達式

SELECT SYSTEMNAME, round(MAX(GBL_CPU_TOTAL_UTIL),2) AS AVE_CPU, 
convert(varchar(20),DATEADD(hour, DATEDIFF(hour, 0, DATETIME), 0),110) AS DATE 
FROM dbo.[GLOBAL] 
WHERE (SYSTEMNAME IN ('X1','X2','X3'))  
AND (DATETIME > DATEADD(month, - 24, GETDATE())) 
AND (DATETIME BETWEEN '12-27-2011 00:00' AND '12-30-2011 00:00') 
GROUP BY SYSTEMNAME, convert(varchar(20), 
DATEADD(hour, DATEDIFF(hour, 0, DATETIME), 0),110) 
ORDER BY DATE 

錯誤:

ORA-00936: missing expression 
00936. 00000 - "missing expression" 
*Cause:  
*Action: 
Error at Line: 2 Column: 9 
+0

對DATE字段使用引用>按「DATE」排序; – 2013-03-29 14:38:15

回答

2

convert(varchar(20), ...

據我所知,convert用於將字符串從一個字符集轉換爲另一個字符集。 varchar(20)而不是一個字符串。這也可能是這種情況,因爲「第2行,第9列」正是varchar(20)所在的位置。

convert國DOCO:


convert(string1 , char_set_to , [ char_set_from ])
string1 is the string to be converted.
char_set_to is the character set to convert to.
char_set_from is the character set to convert from.


如果你的意圖是要將日期差異轉換爲varchar(20)類型,則應該使用cast

+0

好的會改變。謝謝。 – Jemru 2012-01-03 08:06:52

+2

這個SQL很奇怪..很奇怪。大部分函數,​​'dbo'都指向T-SQL。看起來SQL已經從SQL Server查詢盲目複製+粘貼 – Sathya 2012-01-03 08:10:11