Mysql Jasper报告中的自定义分组依据

Mysql Jasper报告中的自定义分组依据,mysql,jasper-reports,Mysql,Jasper Reports,我试图使一个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, z

我试图使一个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表达式、属性和参数


有没有一种方法可以利用报表属性或格式化表达式以允许进行这种类型的分组?

这可能不太好,但您可以将它们连接在一起:

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 id, city, state, zip, value1, value2, value3
FROM table1
GROUP BY IF($P{consolidate_loc}, concat(city, ', ', state, ' ', zip), city)
如果任何值可能为
NULL
,则需要替换它们(最好使用
coalesce()