祝贺所有人。
我有一个SQL Server 2008 Express数据库,其中包含一个名为tbl_Sales
的表,类似如下:
Merchant | Sales | Month
Comp.1 100 201101
Comp.1 200 201102
Comp.2 130 201102
Comp.1 250 201103
Comp.2 130 201103
Comp.3 240 201103
.
.
.
Comp.3 340 201111
Comp.2 240 201112
Comp.3 140 201112
我想在MVC3图表中生成以下数据。
但该图表每隔几个月就需要所有商家的数据冲突。
因此,SQL有一种方法可以执行以下结果:
Merchant | Sales | Month
Comp.1 100 201101
Comp.2 0 201101
Comp.3 0 201101
Comp.1 200 201102
Comp.2 130 201102
Comp.3 0 201102
Comp.1 250 201103
Comp.2 130 201103
Comp.3 240 201103
.
.
.
Comp.3 340 201111
Comp.1 0 201112
Comp.2 240 201112
Comp.3 140 201112
我们可以让另一张表tbl_Merchant
列出我们需要的所有商家,如下所示:
Merchant
Comp.1
Comp.2
Comp.3
.
.
.
Comp.10
欢迎任何建议。
非常感谢。
答案 0 :(得分:2)
是 - 进行商家到月的笛卡尔加入报告(以便每个商家获得每个月的行),然后将其加入数据表 - 如下所示:
select mth.[Month], mct.Merchant, coalesce(s.Sales,0) Sales
from (select distinct [Month] from tbl_Sales) mth
cross join Merchant mct
left join tbl_Sales s
on mth.[Month] = s.[Month] and mct.Merchant = s.Merchant
(如果tbl_Sales特别大,从递归的CTE生成的月份列表中填充mth
内联视图可能会更快,而不是从中选择必要的月份集。销售数据。)