2

特定のテーブルの情報を更新するSQLクエリを実行しようとしています。私が遭遇している問題は、クエリが実行された日付が何であれ、今日の日付をプルするクエリが必要であり、その後、年に戻ってレコードをプルするだけであるということです。次に、AVGその2年間のCUR_CASH_UNITSを返します。DATEDIFFとDATEADDを試しましたが、* liblエラーが返されるため、これらは使用しているシステムでは機能しないようです。これが私が持っているものです:

Select  Month,
    SSSALESNAM,
    CAT,
    Sum(Units) as Units     
From    DW****.******EG
Inner Join  (Select CAT,
                STORE,
                MONTH(DATE) As Month,
                Sum(CUR_CASH_UNITS) As Units
         From   DW*******.****AT        
         Inner Join (Select CAT,
                            CATNUM
                     From   DW****.*****ST) As Category_List             
        On         DW*******.****AT.CATEGORY_NUMBER=Category_List.CATNUM
        --Where  (((CUR_CASH_UNITS.MONTH(DATE)) Between MONTH(DATE) And (MONTH(DATE)-24MONTH))
        Group by Cat,
                 Store,
                 MONTH(DATE)) As Cash_Units

On          DW****.******EG.SSSTR=Cash_Units.STORE           
Group By    Month,
        SSSALESNAM,
        CAT
Order By    Month,
        SSSALESNAM

コメントアウトされている上記のセクションは、日付演算を機能させるための私の試みの1つにすぎません。Whereステートメントをコメントアウトすると、クエリは正しく実行されます。私のテーブルの日付列には、YYYY-MM-DDの形式のDATEというラベルが付いています。SQLは初めてなので、見落としている単純なものである場合は、事前にお詫び申し上げます。

4

1 に答える 1

3

where次のような句が必要だと思います。

where "date" between current date - 2 years and current date

dateは予約語であるため、二重引用符が必要です。残りは、過去 2 年間の日付を取得するためだけです。

于 2013-01-14T14:47:22.253 に答える