【发布时间】:2020-07-28 20:17:45
【问题描述】:
我正在处理以下查询,我将在 Tableau 中使用该查询来创建一个按年份进行颜色编码的折线图,并将该区域用作用户的过滤器。查询有效,但我发现在没有任何销售的地区有几个月。这些部分分解了折线图,我无法填写缺失的空格(我在 X 轴上使用非日期维度 - 直到其财政年度结束的月数)。
我正在寻找一些帮助来更改我的查询,以便为我的数据集中的每个月和每个区域创建一行,以便我的运行总计将有一个值显示在折线图中。如果我的表中没有值,则 = 0 并更新该区域的运行总计。
我有一个 dimDate 表和一个可以在查询中使用的 Regions 表。
现在我的查询,(结果在 Excel 中排序以便查看)Results Table Now
我想做什么;以黄色突出显示的新行What I want to do
我使用 SQL Server 的代码:
SELECT b.gy,
b.sales_month,
b.region,
b.gs_year_total,
b.months_away,
Sum(b.gs_year_total)
OVER (
partition BY b.gy, b.region
ORDER BY b.months_away DESC) RT_by_Region_GY
FROM (SELECT a.gy,
a.region,
a.sales_month,
Sum(a.gy_total) Gs_Year_Total,
a.months_away
FROM (SELECT g.val_id,
g.[gs year] AS GY
,
g.sales_month
AS
Sales_Month,
g.gy_total,
Datediff(month, g.sales_month, dt.lastdayofyear) AS
months_away,
g.value_type,
val.region
FROM uv_sales g
JOIN dbo.dimdate AS dt
ON g.[gs year] = dt.gsyear
JOIN dimvalsummary val
ON g.val_id = val.val_id
WHERE g.[gs year] IN ( 2017, 2018, 2019, 2020, 2021 )
GROUP BY g.valuation_id,
g.[gs year],
val.region,
g.sales_month,
dt.lastdayofyear,
g.gy_total,
g.value_type) a
WHERE a.months_away >= 0
AND sales_month < Dateadd(month, -1, Getdate())
GROUP BY a.gy,
a.region,
a.sales_month,
a.months_away) b
【问题讨论】:
-
可能这样的事情会帮助stackoverflow.com/questions/14155268/…...
-
谢谢,我再仔细看看链接
-
很多很多问题都解决了这个问题。
标签: sql sql-server