SELECT YEAR(OrderDate) 'Year', SUM(TotalDue)
FROM Sales
GROUP BY OrderDate
Order BY OrderDate
如何將每年添加爲一行? 我寫了上面的查詢,但結果仍然以TotalDue Year爲單個行。 例如你如何在SQL中按年份分組行數SUM
SELECT YEAR(OrderDate) 'Year', SUM(TotalDue)
FROM Sales
GROUP BY OrderDate
Order BY OrderDate
如何將每年添加爲一行? 我寫了上面的查詢,但結果仍然以TotalDue Year爲單個行。 例如你如何在SQL中按年份分組行數SUM
你應該GROUP BY
年,訂購日期不:
SELECT YEAR(OrderDate), SUM(TotalDue)
FROM Sales
GROUP BY YEAR(OrderDate)
Order BY OrderDate
SELECT YEAR(OrderDate) 'Year', SUM(TotalDue)
FROM Sales
GROUP BY YEAR(OrderDate)
你應該訂單日期的年份組,但沒有訂購日期本身。
SELECT YEAR(OrderDate) AS `Year`, SUM(TotalDue)
FROM Sales
GROUP BY YEAR(OrderDate)
Order BY Year
謝謝安德烈。我根據您的意見創建了正確的答案。只刪除最後一行,因爲它產生了此錯誤消息:由於ORDER BY 子句中的列「Sales.OrderDate」未包含在聚合函數或GROUP BY子句中,因此無效。 – Eda 2014-11-01 09:38:31
@Eda如果有效,請接受答案 – 2014-11-01 09:54:13
您需要重新分組結果
SELECT y, Sum(s) from ( SELECT YEAR(OrderDate) as y , SUM(TotalDue) as s FROM Sales GROUP BY OrderDate ) group by y Order BY y
你必須在GROUP問題BY語句,因爲它在選定的列進行操作:
SELECT YEAR(OrderDate) theYear, SUM(Due) TotalDue
FROM Sales
GROUP BY theYear --Here you can either order by TotalDue or by theYear,
-- otherwise you will get the errors you mentioned
'GROUP BY theYear'不起作用。 – 2014-11-01 09:59:09
@VDohnal只要在選定的列上執行GROUP BY,這就是我的情況。 – 2014-11-01 10:08:05
檢查http://sqlfiddle.com/#!4/60741/1 – 2014-11-01 10:11:03
請標註的關係數據庫管理系統你使用。 – SQLMason 2017-05-16 12:57:41