2014-04-28 90 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