0
我試圖執行Select
語句,其中包含來自數據庫的多個表,並且其中包含計算的計數列。我有問題添加另一個計算列,我想使用CASE
聲明。在sql 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子句中。
任何人都可以請幫我解決這個問題嗎?
呃,這是怎麼回事與日期格式?請告訴我,您實際上沒有包含該數據的字符串列(這不是很好搜索)。另外,你真的不應該使用'BETWEEN',[特別是在SQL Server中](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil - 具備合common.aspx)。你看到的問題是因爲你在'CASE'語句中有'SUM(Transactions。[Percent])' - 如果你給我們樣本起始數據和預期結果,我們可能會更好地幫助你。 –
也許你需要'SUM(交易。[百分比])'東西? –