假设我有一个如下记录集:
ShopNo Month Year ProfitPercentage
S1 3 2011 25%
S2 4 2011 35%
S3 5 2011 36%
从记录中我们可以看到,商店1在2011年的3个月只有一个记录,而其他几个月我们需要假设为0%现在我们需要自动生成其他月份的数据。
ShopNo Month Year ProfitPercentage
S1 1 2011 0%
S1 2 2011 0%
S1 3 2011 25%
S1 4 2011 0%
S1 5 2011 0%
S1 6 2011 0%
S1 7 2011 0%
S1 8 2011 0%
S1 9 2011 0%
S1 10 2011 0%
S1 11 2011 0%
S1 12 2011 0%
同样需要为其他商店生成。除了结果数据之外,我们还需要进行3个月的转换:
ShopNo Month Year ProfitPercentage
S1 1-3 2011 25%
S1 2-4 2011 25%
S1 3-5 2011 25%
S1 4-6 2011 0%
S1 5-7 2011 0%
S1 6-8 2011 0%
S1 7-9 2011 0%
S1 8-10 2011 0%
S1 9-11 2011 0%
S1 10-12 2011 0%
S1 11-1 2012 0%
S1 12-2 2012 0%
任何人都可以帮我解决这个问题!
答案 0 :(得分:0)
您可以通过对月/年矩阵进行硬编码来作弊 我不认为你可以在不使用某些静态值的情况下生成它。
从那里开始,应该是GROUP BY的一次短途旅行,其中包含一些/和%来获得3个月的回合。
WITH [Matrix] AS (
SELECT
[Year].[Value] [Year],
[Month].[Value] [Month]
FROM
(SELECT 2011 [Value] UNION SELECT 2012 UNION SELECT 2013 UNION SELECT 2014) [Year]
OUTER APPLY (SELECT 1 [Value] UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) [Month]
)
SELECT
M.[Year],
M.[Month],
ISNULL(X.[Percentage], 0)
FROM
[Matrix] M
LEFT OUTER JOIN (<your query goes here as a subquery>) X