嗨我在想,是否有辦法在同一查詢中獲得累計和非累計總計。我有一張桌子,裏面有以下字段: 部門,銷售人員,fin_month,活動,成本SQL在同一查詢中累計和非累計總計
我想要的是有兩個款項,一個會給銷售員一個月的總額,另一個給出一年的總額。我遇到了一個問題,設置兩個不同的標準來使其工作。
很多謝謝
嗨我在想,是否有辦法在同一查詢中獲得累計和非累計總計。我有一張桌子,裏面有以下字段: 部門,銷售人員,fin_month,活動,成本SQL在同一查詢中累計和非累計總計
我想要的是有兩個款項,一個會給銷售員一個月的總額,另一個給出一年的總額。我遇到了一個問題,設置兩個不同的標準來使其工作。
很多謝謝
會這樣的幫助嗎?
SELECT
*
FROM
(
SELECT
Department, SalesPerson
, SUM(fin_month) SalesPerson_Sum
FROM
[TABLE_NAME]
GROUP BY Department, SalesPerson
) a
INNER JOIN
(
SELECT
Department
, SUM(fin_month) AS Department_Sum
FROM
[TABLE_NAME]
GROuP BY
Department
) b
ON
a.Department = b.Department
此解決方案使用CTEs,recursion,和ranking在每一個Department
基於相應的每月總獲得用於每fin_month
每SalesPerson
累積總數。
;WITH
monthlytotals AS (
SELECT
Department,
SalesPerson,
fin_month,
MonthlyTotal = SUM(cost),
rn = ROW_NUMBER() OVER (PARTITION BY Department, SalesPerson
ORDER BY fin_month)
FROM atable
GROUP BY Department, SalesPerson, fin_month
),
alltotals AS (
SELECT
Department,
SalesPerson,
fin_month,
MonthlyTotal,
CumulativeTotal = MonthlyTotal,
rn
FROM monthlytotals
WHERE rn = 1
UNION ALL
SELECT
m.Department,
m.SalesPerson,
m.fin_month,
m.MonthlyTotal,
CumulativeTotal = a.CumulativeTotals + m.MonthlyTotal,
m.rn
FROM monthlytotals m
INNER JOIN alltotals a
ON m.Department = a.Department
AND m.SalesPerson = a.SalesPerson
AND m.rn = a.rn + 1
)
SELECT
Department,
SalesPerson,
fin_month,
MonthlyTotal,
CumulativeTotal
FROM alltotals
我在這裏待了大約一個小時,然後纔看到這個,並在5分鐘內完成。 http://stackoverflow.com/questions/2120544/how-to-get-cumulative-sum – smoore4