2016-12-07 31 views
0

我有一個大型數據集(下面稱爲輸入),其中包含各種信息,如銷售日期,交易日期,付款,銷售額。強制行出現,儘管數據丟失

用戶可以按年,季度或月份生成報表,以顯示特定銷售年度的特定月份/季度/年度的付款金額。因此,您可以在首次銷售5年後進行付款,即2016年與2011年銷售年有關的付款。

用戶可以決定他們是否希望在月份/季度/年份有這些付款期限通過使用宏變量(即%讓ReportBasis = Year)和ReportBasis的代碼開始可以通過其餘代碼調用,而無需手動調整。

該報告使用生產:

proc sql; 
create table report as 
select sales_year, &ReportBasis, Sum(Sales) as Sales 
from input 
group by sales_year, &ReportBasis; 
quit; 

現在我遇到的問題是,如果在所有銷售多年的問題某一特定時期沒有付款,那麼就在該期間沒有行。這產生了佈局問題。

我需要一個解決方案,這可以是動態的,因爲宏變量的性質(每個季度變化一次)。

所以我有這個(例子):

2011 Month 11  100 
2011 Month 12  250 
2011 Month 13  85 
2011 Month 15  90 
2011 Month 16  300 

但我需要這樣的:

2011 Month 11  100 
2011 Month 12  250 
2011 Month 13  85 
2011 Month 14  0 
2011 Month 15  90 
2011 Month 16  300 

那裏是在本月14沒有實際支付我的所有數據(甚至其他年份2012年,2013等),所以它不會出現在我的第一張表格中,但第二張表格仍然聰明地知道包含它。

在此先感謝。

+0

使用壓延表(google一下) – HoneyBadger

回答

1

這裏是一個解決方案,假設所有年和報告input的代表,雖然不是所有的組合:

create table report as 
    select sy.sales_year, r.rb, Sum(i.Sales) as Sales 
    from (select distinct sales_year from input) sy cross join 
     (select distinct &ReportBasis as rb from input) r left join 
     input i 
     on i.sales_year = sy.sales_year and i.&ReportBasis = r.&ReportBasis 
    group by sy.sales_year, r.rb; 
+0

這給了4個錯誤,每個2:列在使用相關名稱r標識的表/視圖中找不到report_month。模糊引用,列sales_year在多個表中。我該如何解決?我不是很熟悉加入 – user43080

+0

最近的編輯刪除了後面的錯誤,但前者仍然存在。 – user43080

+0

@ user43080。 。 。我不知道你的數據是如何構建的。命名與您的查詢中的命名似乎一致。 –