在业务对象 webi 中。
下面,对于 3 月份,ABC 的派生列中没有数据
Jan Feb Apr May Jun...
A 1 3 3 4 5... B 2 0 2 2 2... C 1 3 5 1 1...
我想拥有
Jan Feb Mar Apr May Jun...
A 1 3 0 3 4 5... B 2 0 0 2 2 2... C 1 3 0 5 1 1...
如何做到这一点,任何人都可以帮助我解决这个问题......
提前感谢。
在业务对象 webi 中。
下面,对于 3 月份,ABC 的派生列中没有数据
Jan Feb Apr May Jun...
A 1 3 3 4 5... B 2 0 2 2 2... C 1 3 5 1 1...
我想拥有
Jan Feb Mar Apr May Jun...
A 1 3 0 3 4 5... B 2 0 0 2 2 2... C 1 3 0 5 1 1...
如何做到这一点,任何人都可以帮助我解决这个问题......
提前感谢。
在(我们的)当前版本中,您无法显示不存在的数据。在未来的版本中,这可能不是问题。
对于与日期相关的数据,您可以尝试强制显示关键期间,然后将您的数据 LOJ 到它。不是最简单的,因为它取决于是否能够创建静态表和/或编写 SQL 命令。
如果您可以将静态日期表放入数据库,那可能是最简单的方法。每个月的第一天有一个条目的表可能就足够了。将此表添加到您的数据的链接 - 使用静态表作为 LEFT 表,将包含一个包含月份的列,即使对于您的数据不存在的月份也是如此。找到正确的链接可能是个问题。
我这样做的最简单方法是使用 SQL 命令来提供报告,使用 CTE(通用表元素)、种子表和日期数学来获得驱动表的完整日期跨度,然后根据我的真实日期计算日期查询联接。从那里,您将有一个附加(派生和驱动)列用作您的新日期元素。
第一次设置很痛苦,但是你有了代码并且可以根据需要重用它。
我做类似的事情:
With
MOS as ( -- CTE for # of months I plan on covering - NEGATIVELY from today's date
Select -12 as Offset from Dual UNION ALL
Select -11 from Dual UNION ALL
Select -10 from Dual UNION ALL
Select -9 from Dual UNION ALL
Select -8 from Dual UNION ALL
Select -7 from Dual UNION ALL
Select -6 from Dual UNION ALL
Select -5 from Dual UNION ALL
Select -4 from Dual UNION ALL
Select -3 from Dual UNION ALL
Select -2 from Dual UNION ALL
Select -1 from Dual
)
, ChartDates as ( -- gives the 1st day of the month, for the 'n' months above
Select TRUNC( ADD_MONTHS(sysdate, MOS.offset ), 'MONTH' ) ChartMonth
from MOS
)
-- Join to the real query
Select CD.ChartMonth, YQ.*
from ChartDates CD
Left Outer Join (YourQuery) YQ
on CD.ChartMonth = YQ.QueryMonth
您将需要一种方法来从您的数据中生成等效的“每月第一天”以用作连接条件。
从那里,将整个内容粘贴为 SQL,并使用新字段 ChartMonth 作为您的驾驶日期。