本年与上年的 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;
我正在使用 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 报告中建议如何执行此操作吗?
查看
要从输入参数中减去一年,您应该在添加参数的 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;