2017-08-03 9 views
0

以下のクエリはDATEADDの部分でエラーを示しますが、ここで問題または構文エラーが表示されないようです。私の間違いのヒント?DATEADDキーワード 'AS'の近くの構文が正しくありません

SELECT 
    YEAR(DATEADD(MINUTE, 180 - 480, fld_ConsDateTime) AS DATE) AS fld_year, 
    MONTH(DATEADD(MINUTE, 180 - 480, fld_ConsDateTime) AS DATE) AS fld_month, 
    fld_DeviceId, 
    SUM(fld_EnergyTotalIndexValue) AS Total_Monthly_Consumption, 
    MIN(fld_ConsDateTime) AS Min_ConsDateTime, 
    MAX(fld_ConsDateTime) AS Max_ConstDateTime 
FROM tbl_EM_DeviceEnergyHourlyConsumption 
WHERE 
    fld_Deleted = 0 
    AND fld_DeviceId = 5 
    AND fld_ConsDateTime >= DATEADD(MINUTE, -180 + 480, '2017-01-01 00:00') 
    AND fld_ConsDateTime < DATEADD(MINUTE, -180 + 480, '2017-08-01 00:00') 
GROUP BY YEAR(DATEADD(MINUTE, 180 - 480, fld_ConsDateTime) AS DATE), MONTH(DATEADD(MINUTE, 180 - 480, fld_ConsDateTime) AS DATE), fld_DeviceId 

ORDER BY fld_month ASC 

PS:エラーメッセージ: 'AS'というキーワードの構文が正しくありません。

+2

グループBYSは、エイリアスを使用しないでください。この試料を自由に振りかけ、 'AS DATE'チャンクとは何 – UnhandledExcepSean

+2

することで、グループでそれらを削除しますか? –

+0

私はあなたがクエリからAS DATEビットを削除できると思います。彼らは何の意義もないようです。それは –

答えて

4

AS DATEです。4桁はではありません。

SELECT 
    YEAR(DATEADD(MINUTE, 180 - 480, fld_ConsDateTime)) AS fld_year, 
    MONTH(DATEADD(MINUTE, 180 - 480, fld_ConsDateTime)) AS fld_month, 
    fld_DeviceId, 
    SUM(fld_EnergyTotalIndexValue) AS Total_Monthly_Consumption, 
    MIN(fld_ConsDateTime) AS Min_ConsDateTime, 
    MAX(fld_ConsDateTime) AS Max_ConstDateTime 
FROM tbl_EM_DeviceEnergyHourlyConsumption 
WHERE 
    fld_Deleted = 0 
    AND fld_DeviceId = 5 
    AND fld_ConsDateTime >= DATEADD(MINUTE, -180 + 480, '2017-01-01 00:00') 
    AND fld_ConsDateTime < DATEADD(MINUTE, -180 + 480, '2017-08-01 00:00') 
GROUP BY YEAR(DATEADD(MINUTE, 180 - 480, fld_ConsDateTime)), MONTH(DATEADD(MINUTE, 180 - 480, fld_ConsDateTime)), fld_DeviceId 

ORDER BY fld_month ASC 
0

GROUP BY句ではエイリアスを使用できません。また、SELECTにエイリアスをネストしないでください。あなたができないことの簡単な例については以下を参照してください。

DECLARE @Table TABLE (ID INT) 
SELECT ID,COUNT(*) FROM @Table GROUP BY ID --Works 
SELECT ID AS TEST,COUNT(*) FROM @Table GROUP BY ID --Works 
SELECT (ID AS TEST) AS [ThisWillBreak],COUNT(*) FROM @Table GROUP BY ID 
SELECT ID,COUNT(*) FROM @Table GROUP BY ID AS [ThisWillBreak] 
関連する問題