2012-01-03 51 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フィールドに「引用」を使用してください。 –

答えて

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

okが変更になります。ありがとう。 – Jemru

+2

そのSQLは奇妙です。本当に奇妙です。ほとんどの関数 'dbo'はT-SQLを指しています。 SQLは、SQL Serverクエリからブラインドコピー+ペーストされたようです – Sathya

関連する問題