我使用了一些预先定义的条件来比较Trade表中的Date字段和GETDATE()函数来计算本月,今年,上一年的交易等。
现在我需要创建一个附加表,其中我将有一组日期代表报告周期的开始和结束日期,例如本年度报告的开始和结束日期,上一年度报告的开始和结束日期等。
此附加表和Trade表未加入。事实上,附加表没有链接到任何东西。
我需要创建一组新的预定义条件,其中Date from Trade表将与新日期表中的值进行比较,即我希望新条件如下所示
Trade.Date < ReportingDates.CurrentYearEndDate
AND
Trade.Date > ReportingDates.CurrentYearStartDate
条件验证正常,但不幸的是我得到“查询无法运行,因为它包含不兼容的对象。(IES 00008)”错误“当我尝试执行条件时。
答案 0 :(得分:1)
您可以在预定义条件中使用子选择,如:
trade.date between (select currentyearstartdate from reportingdates)
and (select currentyearenddate from reportingdates)
由于reportingdates
实际上并未与任何东西连接,因此它不需要位于Universe结构中。这确实有一个缺点 - 从表格列表中看不出它在宇宙中实际需要它。
或者,您可以创建一个将trade
和reportingdates
作为笛卡尔积连接的派生表。派生表将包含两个表中的所有列,因此您的条件就是(假设派生表名为DT
):
dt.date between dt.currentyearstartdate and dt.currentyearenddate
此方法的缺点是所有查询中都包含reportingdates
,无论是否需要,SQL都可以有点难读。