2014-04-28 91 views
0

來自實際和去年的並排詳細信息我正在創建一個報告,顯示銷售當前和去年的詳細信息部分。Crystal Reports - 使用UNION ALL使用UNION ALL

報告的行有這樣的結構:

Article |||| LastYearQty | LastYearPrice |||| ActualYearQty | ActualYearPrice 

有在報告兩個參數,起始日期和結束日期。

我創建了一個視圖view_RowsDocs,它將替換原始表RowsDocs,與附加布爾字段IsLastYear篩選每一行,但我有一些問題來過濾日期,分類在去年或在行實際的一年。

例如,StartDate 1-1-2014EndDate 28-4-2014

IsLastYear || Article || Qty || Price || Date 
    1   A0001  12  13,12 12-2-2013 
    0   A0001  13  13,11 12-7-2013 

什麼可以更新IsLastYear領域的最佳方法是什麼?

回答

1

我認爲你使用視圖來獲得這個與IsLastYear屬性的關係的事實可能會讓你感到困擾。這是因爲通過使用視圖,你實際上正在觸及基礎關係。你的邏輯確定IsLastYear屬性是做一些棘手的事情。

相反,考慮使用臨時表來實例化與IsLastYear屬性的關係:

select 
    ... 
    ,[Date] 
    ,CASE 
     WHEN YEAR([Date]) = YEAR(GETDATE()) - 1 
     THEN 1 
     ELSE 0 
    END as [IsLastYear] 
into #myTempTbl 
from RowsDocs 

如果你是生產該數據集的存儲過程,包括DROP TABLE #myTempTbl在存儲過程的結束。

+1

沿着SQL線,您可以在Crystal Reports中創建一個公式來比較日期字段中的年份,以查看它是否與當前年份:年份({DATE})=年份(CurrentDate)匹配 – Sun