2

我正在尝试使 MySQL 支持的 Jasper 报告在查询表达式中具有特定的 GROUP BY。我可以使用参数在两个不同的列之间切换:

SELECT id, city, state, zip, value1, value2, value3, IF($P{consolidate_zip}, zip, city) AS groupField
FROM table1
GROUP BY groupField

但是,在这种情况下,我需要在多列或单列之间切换。

SELECT id, city, state, zip, value1, value2, value3, IF($P{consolidate_loc}, "city, state, zip", city) AS groupField
FROM table1
GROUP BY groupField

我正在尝试将其放入现有的报告生成器中,因此我仅限于 SQL 表达式、属性和参数。

有没有办法利用报告属性,或格式化表达式以允许发生这种类型的分组?

4

1 回答 1

0

它可能不漂亮,但您可以将它们连接在一起:

SELECT id, city, state, zip, value1, value2, value3,
       IF($P{consolidate_loc}, concat(city, ', ', state, ' ', zip), city) AS groupField
FROM table1
GROUP BY groupField;

您已经拥有了所有字段select,因此您可以将表达式放在group by

SELECT id, city, state, zip, value1, value2, value3
FROM table1
GROUP BY IF($P{consolidate_loc}, concat(city, ', ', state, ' ', zip), city)

如果任何值可能是NULL,则需要替换它们(最好使用coalesce().

于 2013-09-10T21:33:35.567 回答