我试图创建一个查询,向我显示每个月的所有产品,但是我遇到了问题,因为如果某个产品在某个月内没有销售,它就不会出现了,我希望传递价值逐月进步。
你可以看到2月份我有OLD和ORD,但因为在3月和4月没有销售的产品我看不到,5月也没有,因为没有销售的OLD产品不会出现。我希望每个月都能拥有所有产品,即使在开始时它也是空的。
类似的东西:
2015年2月:
0-OIR,2-OLD,2-ORD
2015年3月:0-OIR,2-OLD,2-ORD
2015年4月:0-OIR,2-OLD,2-ORD
2015年5月:1-OIR,2-OLD,5-ORD
2015年6月:1-OIR,2-OLD,7-ORD
等表格直到当前日期
左边的列,每个产品的累计总和,以及年和月之间的所有产品的累积总和。
查询看起来像这样。
select
sum(a.count) over (partition by [Product Name] ORDER BY Year,Month) as 'Sum Per Product'
,a.[Product Name]
,a.month
,a.Year
,sum(a.Count) OVER (ORDER BY Year,Month) as 'Cumulative Sum of all products'
,
case
a.Month
when 1 then 'January'
when 2 then 'February'
when 3 then 'March'
when 4 then 'April'
when 5 then 'May'
when 6 then 'June'
when 7 then 'July'
when 8 then 'August'
when 9 then 'September'
when 10 then 'October'
when 11 then 'November'
when 12 then 'December'
end [months]
from (
SELECT
count(COALESCE(p.ShortName + ' ' ,'No Product')) as 'Count'
,COALESCE(p.ShortName + ' ' ,'No Product') as 'Product Name'
,MONTH(m.CreatedDatetime) AS 'Month'
,YEAR(m.CreatedDatetime) AS 'Year'
FROM Request r
LEFT JOIN Contact c on r.ContactId = c.ID
LEFT JOIN Machine m on r.machineId = m.ID
LEFT JOIN MachineStatus ms on m.active = ms.ID
join machineProduct mp on m.Id=mp.MachineId
LEFT JOIN RequestProduct rp on r.ID = rp.RequestId
LEFT JOIN ProductVersion pv on pv.ID = rp.ProductVersionId
LEFT JOIN Product p on pv.ProductId = p.ID
WHERE
m.statusid in (1,2)
GROUP BY COALESCE(p.ShortName + ' ' ,'No Product'), YEAR(m.CreatedDatetime),MONTH(m.CreatedDatetime)) a
group by Month,Year,a.count,a.[Product Name]
Order by a.Year,a.Month,a.[Product Name],[months]
编辑:
我已经创建了一个看起来像这样的临时表,但是如何将它连接到我的主查询以从Temp Table + 2列中检索每个产品的累积求和和所有产品的累积求和。
查询看起来像这样
`Declare @temp table
(id int
,name nvarchar(40)
,yeari int
,monthi int
)
-
Insert into @temp (id,name,yeari,monthi) (Select prd.id,prd.shortname,mac.yeari,mac.monthi
from (Select id,shortname from Product where Product.Active=1) prd
cross join (select distinct year(m.createddatetime) as yeari
,month(m.createddatetime) as monthi
FROM machine m
) mac)`
输出如下所示:
如何连接它们?