0

Selectデータベースからの複数のテーブルを含み、カウントの計算列が追加されたステートメントを実行しようとしています。CASEステートメントを使用する別の計算列を追加する際に問題があります。

私のコードは次のようになります。

SELECT     
    Customers.FirstName, Customers.LastName, Customers.PrivateNumber, 
    Branches.Name, Pawns.ID, Pawns.StartDate, Pawns.FinishDate, 
    Items.Name, Items.Mass, Items.Quantity, Pawns.CurrentSum, 
    Transactions.[Percent], Currencies.Name as Currency,
    COUNT(1) OVER (PARTITION BY Pawns.ID) AS Cnt, 
    NewDistrPrcnt = (CASE WHEN COUNT(1) OVER (PARTITION BY Pawns.ID) > '1' 
                    THEN Items.Mass/SUM(Transactions.[Percent])*Transactions.[Percent] 
                    Else Transactions.[Percent] End)  
FROM         
    Customers 
INNER JOIN
    Pawns ON Customers.ID = Pawns.CustomerID 
INNER JOIN
    Items ON Pawns.ID = Items.PawnID 
INNER JOIN
    Branches ON Pawns.BranchID = Branches.ID AND Pawns.LocationID = Branches.ID 
INNER JOIN
    PawnTypes ON Pawns.PawnTypeID = PawnTypes.ID 
INNER JOIN
    Currencies ON PawnTypes.CurrencyID = Currencies.ID 
LEFT OUTER JOIN
    Transactions ON Pawns.ID = Transactions.PawnID AND Pawns.FinishDate = Transactions.Date
WHERE     
    (Pawns.StatusID = 6) AND (Pawns.FinishDate BETWEEN '15Oct2013' AND '23Oct2013')
ORDER BY 
    Pawns.ID, Branches.Name, Pawns.FinishDate DESC

クエリを実行しようとすると、次のエラーが返されます。

メッセージ 8120、レベル 16、状態 1、行 1
列 'Customers.FirstName' は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。

誰でもこの問題を解決するのを手伝ってもらえますか?

4

1 に答える 1