运行 总共连接两个表
Running total joining two tables
我有两张桌子
-----Dates----- ------Sales------
Date | Month Date | Quantity
--------------- ------------------
09/06/16| Jun 09/06/16| 2
09/07/16| Jul 15/07/16| 11
19/09/16| Sep 19/09/16| 12
21/09/16| Sep 09/07/16| 33
17/11/16| Nov 21/09/16| 45
我需要编写一个 SQL 查询来计算 运行 每个月的总销售额
我可以这样做吗?
SELECT Month,
(SELECT SUM(Quantity) FROM Sales WHERE Month<=Dates.Month)
FROM Dates, Sales
WHERE Dates.Date = Sales.Date
ORDER BY Month
感觉自己的思路有问题,但是没有数据库可以证明
您可以使用月份进行联接,然后对总数进行求和和分组
SELECT month(d.date), SUM(s.Quantity)
FROM Dates d
LEFT JOIN Sales S on month(d.date) = month(s.date)
ORDER BY month(d.date)
您可以使用 INNER JOIN
和 GROUP BY
:
SELECT Dates.Month, SUM(Quantity)
FROM Dates INNER JOIN Sales ON Dates.Date = Sales.Date
WHERE Sales.Month <= Dates.Month
GROUP BY Dates.Month
ORDER BY Dates.Month
试试这个,应该有效:
WITH CTE
AS
(
Select DateName(mm,D.Date) as Month,MONTH(D.Date) as UsedByOrderByLater,Sum(S.Quantity) as SumForCurrentMonth
FROM Dates as D
Inner Join Sales as S
ON S.Date = D.Date
Group by DateName(mm,D.Date),MONTH(D.Date)
)
Select CTE.Month,CTE.SumForCurrentMonth ,
SUM(CTE.SumForCurrentMonth) OVER(Order by CTE.UsedByOrderByLater
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as runningtotal
from CTE
我有两张桌子
-----Dates----- ------Sales------
Date | Month Date | Quantity
--------------- ------------------
09/06/16| Jun 09/06/16| 2
09/07/16| Jul 15/07/16| 11
19/09/16| Sep 19/09/16| 12
21/09/16| Sep 09/07/16| 33
17/11/16| Nov 21/09/16| 45
我需要编写一个 SQL 查询来计算 运行 每个月的总销售额
我可以这样做吗?
SELECT Month,
(SELECT SUM(Quantity) FROM Sales WHERE Month<=Dates.Month)
FROM Dates, Sales
WHERE Dates.Date = Sales.Date
ORDER BY Month
感觉自己的思路有问题,但是没有数据库可以证明
您可以使用月份进行联接,然后对总数进行求和和分组
SELECT month(d.date), SUM(s.Quantity)
FROM Dates d
LEFT JOIN Sales S on month(d.date) = month(s.date)
ORDER BY month(d.date)
您可以使用 INNER JOIN
和 GROUP BY
:
SELECT Dates.Month, SUM(Quantity)
FROM Dates INNER JOIN Sales ON Dates.Date = Sales.Date
WHERE Sales.Month <= Dates.Month
GROUP BY Dates.Month
ORDER BY Dates.Month
试试这个,应该有效:
WITH CTE
AS
(
Select DateName(mm,D.Date) as Month,MONTH(D.Date) as UsedByOrderByLater,Sum(S.Quantity) as SumForCurrentMonth
FROM Dates as D
Inner Join Sales as S
ON S.Date = D.Date
Group by DateName(mm,D.Date),MONTH(D.Date)
)
Select CTE.Month,CTE.SumForCurrentMonth ,
SUM(CTE.SumForCurrentMonth) OVER(Order by CTE.UsedByOrderByLater
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as runningtotal
from CTE