【问题标题】:Birt Report and Date Parameter between current year and previous year当年与上年之间的出生报告和日期参数
【发布时间】:2016-03-28 06:53:53
【问题描述】:

我正在使用 stackoverflow 的一位同事向我建议的以下查询。以下查询使用日期来获取当前年份 (>2016,2015, Here's the code given to me

SELECT grade,
       COUNT( DISTINCT CASE WHEN DATE '2015-01-01' >= date_column
                             AND date_column < DATE '2016-01-01'
                            THEN customer_id END
            ) AS number_of_unique_customers_in_2015,
       COUNT( DISTINCT CASE WHEN DATE '2016-01-01' >= date_column
                             AND date_column < DATE '2017-01-01'
                            THEN customer_id END
            ) AS number_of_unique_customers_in_2016
FROM   Customers
WHERE  Date_Column >= DATE '2015-01-01'
AND    Date_Column <  DATE '2017-01-01'
GROUP BY grade;

谁能在 birt 报告中建议如何做到这一点?

【问题讨论】:

  • 问题被标记为“oracle”,但是SQL语法不是Oracle SQL!?
  • 但它适用于我的 Oracle 环境

标签: oracle date birt


【解决方案1】:

查看my answer here,了解如何在 Birt 中向 SQL 查询添加参数。您应该添加您的报告参数以首先输入用户的日期。

要从输入参数中减去一年,您应该在添加参数的 SQL 查询中使用带有一年负值的 DATEADD

对于输入参数日期2016-01-01,您的查询应如下所示:

SELECT grade,
       COUNT( DISTINCT CASE WHEN DATEADD(year, -1, ?) >= date_column
                             AND date_column < ?
                            THEN customer_id END
            ) AS number_of_unique_customers_in_last_year,
       COUNT( DISTINCT CASE WHEN ? >= date_column
                             AND date_column < DATEADD(year, 1, ?)
                            THEN customer_id END
            ) AS number_of_unique_customers_in_current_year
FROM   Customers
WHERE  Date_Column >= DATEADD(year, -1, ?)
AND    Date_Column <  DATEADD(year, 1, ?)
GROUP BY grade;

【讨论】:

  • 您的回答有帮助,但年份之间有限制,对吗?我的意思是在上面的查询示例中,我希望用户选择一年,例如2018 年,以便我可以显示当前任何一年的结果,在这种情况下是当前 2018 年和去年 2017 年。如果这是一个更具叙述性的答案,请告诉我。
  • 据我了解,上述查询仅限于 2015 年和 2016 年,对吧?如果是,那么我怎样才能做到才能工作多年?
  • 您必须将查询中出现的'2015-01-01''2016-01-01' 替换为? 才能在查询中使用参数。您可以在任何地方使用它们,它们不限于 where 子句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
  • 2019-03-09
  • 1970-01-01
  • 2016-07-30
相关资源
最近更新 更多