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 句にも含まれていないため、選択リストでは無効です。
誰でもこの問題を解決するのを手伝ってもらえますか?