为了简化表格结构,我将使用一个简单的表格样本。假设我有这张表:
Quantity
我需要每月获得Select Month(date), Sum(Quantity) from tablename Group By Month(date)
的总和,包括没有交易的月份
我试过这个,但它只显示交易数月。
$(function() {
$("video").each(function() {
this.pauseOthers = function(event) {
$('video').addClass('stopvideo');
$(this).removeClass('stopvideo');
$('.stopvideo').each(function() {
this.pause();
});
};
this.addEventListener("play", this.pauseOthers.bind(this), false);
});
});
不介意这一年。让我们说该表仅包含当前年度数据
答案 0 :(得分:2)
创建一个存储月份的虚拟表:
Select months.m, isnull(Sum(Quantity),0) as Q
from tablename right join
(VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12))
AS months(m)
on months.m=Month(tablename.date)
Group By months.m
答案 1 :(得分:0)
这是一般的想法。关键是要创建一个列出所需月份的表,然后使用外部联接附加实际数据。
with months(mon) as (
select 1 union all select 2 union all select 3 union all
select 4 union all select 5 union all select 6 union all
select 7 union all select 8 union all select 9 union all
select 10 union all select 11 union all select 12
)
select m.mon, coalesce(sum(quantity), 0) as quantity
from months m left outer join <T> t on month(t.date) = m.mon
group by m.mon
如果从1月到12月需要超过一年的数据或者不喜欢这种方法,有很多方法可以创建月份列表。
答案 2 :(得分:0)
With Months as
(
SELECT 1 AS MNTH
UNION ALL
SELECT MNTH+1 FROM Months WHERE MNTH<12
)
SELECT MONTH(MNTH),SUM(QUANTITY)
FROM Months M LEFT JOIN TABLENAME T ON M.MNTH = MONTH(T.DATE)
GROUP BY MONTH(MNTH)