本年与上年的 Birt Report 和 Date Parameter

Birt Report and Date Parameter between current year and previous year

我正在使用 Whosebug 的一位同事向我建议的以下查询。以下查询使用日期来计算当前年份 (>2016,<2017) 和上一年 (>2015, <2016)。我想在 Birt 报告中使用它 - 并特别提示用户 select 日期(默认情况下当前日期将为 selected)并且查询将自动减去一年以计算本年度的结果和上一年的结果。

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 报告中建议如何执行此操作吗?

查看 了解如何在 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;