0

日付全体ではなく、日付の年と四半期の部分をテーブルで選択したいと思います。これを実現するために、次のクエリを作成しました。

SELECT Clients.ClientID,
       Sum(AccountVals.ValuationAmount) AS SumOfValuationAmount,
       Datepart("YYYY", AccountVals.valuationAmount) AS valYear,
       Datepart("Q", AccountVals.valuationAmount) AS valQuarter
FROM   (Accounts
        INNER JOIN Clients
          ON Accounts.ClientID = Clients.ClientID)
       INNER JOIN AccountVals
         ON Accounts.AccountID = AccountVals.AccountID
GROUP  BY Clients.ClientID,
          SumOfValuationAmount,
          valYear,
          valQuarter;

単純なselectクエリで正常に使用DATEPARTできましたが、このクエリが集計関数であり、テーブルがリンクされているという事実が私を驚かせています。何か案は?

編集:クエリに基準がないことに気付きました。これは、異なる日付の結果を集計しようとしている可能性があるため、日付部分を表示できないことを意味します。のようなものを追加しようとしましHAVING valYear = 2012 AND valQuarter = 3たが、同じエラーが発生します

4

1 に答える 1

3

group by少なくともサブクエリがなければ、句でエイリアスを使用できるとは思いません。1つの解決策は、グループ内の正確な式を次のように繰り返すことです。

group by
        Clients.ClientID
,       datepart("YYYY", AccountVals.valuationAmount) 
,       datepart("Q", AccountVals.valuationAmount)
于 2013-02-07T10:31:23.713 に答える