【问题标题】:Using Pentaho Report Designer how to display data in a line使用 Pentaho Report Designer 如何在一行中显示数据
【发布时间】:2016-03-12 03:59:03
【问题描述】:

使用 Pentaho 报表设计器我想从数据库中的列中获取数据并将这些数据显示在一行中。

请参阅下面的示例。有没有办法我可以做到这一点?

我的数据库表如下所示:

GENUS       SPECIFIC_EPITHET    SPECIES_AUTHOR
Asplenium   scolopendrium       L.
Asplenium   bradleyi            D.C. Eaton
Asplenium   platyneuron        (L.) Britton, Sterns & Poggenb.
Asplenium   viride              Huds.

我希望报告如下所示:

Asplenium scolopendrium L., Asplenium bradleyi D.C. Eaton, Asplenium platyneuron (L.) Britton, Sterns & Poggenb., Asplenium viride Huds.

我只能让报告在如下所示的列表中显示数据。

Asplenium scolopendrium L.
Asplenium bradleyi D.C. Eaton
Asplenium platyneuron (L.) Britton, Sterns & Poggenb.
Asplenium viride Huds.

如果有人能告诉我这在 PRD 是否不可能,那也会很有帮助。

【问题讨论】:

  • 你用的是什么数据库?
  • 我正在使用 pgAdmin 和 PostgreSQL 数据库,但我认为这无关紧要。

标签: database formatting reporting pentaho


【解决方案1】:

感谢 Deanicus 在 Pentaho 报告论坛 (see here) 上向我展示了这一点。

主要技巧是在通过 PRD 将数据输入报告之前查询我的数据库。因为我使用的是 POSTGRESQL 数据库,所以我用来查询数据库的代码看起来像这样。

SELECT
     string_agg(CONCAT(CONCAT(CONCAT(
     c."genus", ' '),
     c."specific_epithet",' '),
     c."species_author"),', ') as scinamewauthor
FROM
     "public"."main_checklist" as c

我的最终查询实际上要复杂得多,因为我添加了各种空格和 html 格式标记。整段代码实际上是这样的。

SELECT
    string_agg (CONCAT(
     (SELECT CASE WHEN s."genus_synonym" IS NULL THEN '' ELSE '<i>'||s."genus_synonym"||'</i>' END),
     (SELECT CASE WHEN s."specific_epithet_synonym" IS NULL THEN '' ELSE ' <i>'||s."specific_epithet_synonym"||'</i>' END),
     (SELECT CASE WHEN s."species_author_synonym" IS NULL THEN '' ELSE ' '||s."species_author_synonym" END),
     (SELECT CASE WHEN s."subspecific_epithet_synonym" IS NULL THEN '' ELSE ' ssp. '||'<i>'||s."subspecific_epithet_synonym"||'</i>'END),
     (SELECT CASE WHEN s."subspecies author_synonym" IS NULL THEN '' ELSE ' '|| s."subspecies author_synonym" END),
     (SELECT CASE WHEN s."varietal_epithet_synonym" IS NULL THEN '' ELSE ' var. <i>'||s."varietal_epithet_synonym"||'</i>'    END),
     (SELECT CASE WHEN s."variety_author_synonym" IS NULL THEN '' ELSE ' '|| s."variety_author_synonym" END),
     (SELECT CASE WHEN s."misapplied" = 'misapplied hybrid formula 1' THEN ' misapplied' ELSE '' END),
     (SELECT CASE WHEN s."hybrid_formula_genus_synonym" is null THEN '' ELSE ' × <i>'||substring("hybrid_formula_genus_synonym" from 1 for 1)||'.</i>'END),
     (SELECT CASE WHEN s."hybrid_formula_specific_epithet_synonym" is null THEN '' ELSE ' <i>'|| s."hybrid_formula_specific_epithet_synonym"||'</i>' END),
     (SELECT CASE WHEN s."hybrid_formula_species_author_synonym" is null THEN '' ELSE ' '||s."hybrid_formula_species_author_synonym" END),
     (SELECT CASE WHEN s."hybrid_formula_subspecific_epithet_synonym" IS NULL THEN '' ELSE ' ssp. <i>'||s."hybrid_formula_subspecific_epithet_synonym"||'</i>' END),
     (SELECT CASE WHEN s."hybrid_formula_subspecies_author_synonym" IS NULL THEN '' ELSE ' '||s."hybrid_formula_subspecies_author_synonym"  END),
     (SELECT CASE WHEN s."hybrid_formula_varietal_epithet_synonym" IS NULL THEN '' ELSE ' var. <i>'||s."hybrid_formula_varietal_epithet_synonym"||'</i>'END),
     (SELECT CASE WHEN s."hybrid_formula_variety_author_synonym" IS NULL THEN '' ELSE ' '||s."hybrid_formula_variety_author_synonym"END),
     (SELECT CASE WHEN s."misapplied" = 'misapplied hybrid formula 2' THEN ' misapplied' ELSE '' END),
     (SELECT CASE WHEN s."genus_hybrid_synonym" IS NULL THEN '' ELSE '×'End),
     (SELECT CASE   WHEN s."hybrid_name_genus_synonym" IS NULL THEN '' 
                WHEN s."genus_synonym" IS NULL THEN '<i>'||s."hybrid_name_genus_synonym"||'</i>' 
                Else ' = <i>'||"hybrid_name_genus_synonym" ||'</i>'END),
     (SELECT CASE   WHEN s."hybrid_name_specific_epithet_synonym" IS NULL THEN '' 
                when s."genus_hybrid_synonym" is null then ' ×<i>'||s."hybrid_name_specific_epithet_synonym"||'</i>' 
                ELSE ' <i>'||s."hybrid_name_specific_epithet_synonym"||'</i>' END),
     (SELECT CASE WHEN s."hybrid_name_species_author_synonym" IS NULL THEN '' ELSE ' '||s."hybrid_name_species_author_synonym" END),
     (SELECT CASE WHEN s."hybrid_name_subspecific_epithet_synonym" IS NULL THEN '' ELSE ' ssp. <i>'||s."hybrid_name_subspecific_epithet_synonym"||'</i>'END),
     (SELECT CASE WHEN s."hybrid_name_subspecies_author_synonym" IS NULL THEN '' ELSE ' '||s."hybrid_name_subspecies_author_synonym"END),
     (SELECT CASE WHEN s."hybrid_name_varietal_epithet_synonym" IS NULL THEN '' ELSE ' var. <i>'||s."hybrid_name_varietal_epithet_synonym"||'</i>'END),
     (SELECT CASE WHEN s."hybrid_name_variety_author_synonym" IS NULL THEN '' ELSE ' 'END),
     s."hybrid_name_variety_author_synonym",
     (SELECT CASE   WHEN (s."misapplied" IS NULL or s."misapplied" = 'misapplied hybrid formula 1' or s."misapplied" = 'misapplied hybrid formula 2') Then '' 
                WHEN s."misapplied" = 'misapplied hybrid name' Then ' misapplied'
                Else ' '||"misapplied" END)),
     ', '
     Order by s."genus_synonym" ASC,
     s."specific_epithet_synonym" ASC,
     s."varietal_epithet_synonym" ASC NULLS FIRST,
     s."subspecific_epithet_synonym" ASC NULLS FIRST,
     s."hybrid_formula_specific_epithet_synonym" ASC,
     s."hybrid_formula_subspecific_epithet_synonym" ASC,
     s."hybrid_formula_varietal_epithet_synonym" ASC,
     s."hybrid_name_specific_epithet_synonym" ASC)as syno


FROM

     "public"."synonyms" as s INNER JOIN "public"."main_checklist" ON s."record_id" = "public"."main_checklist"."record_id"
WHERE
    s."record_id" = ${import_record_id}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    相关资源
    最近更新 更多