BIRT 中使用的多个 SQL 标准的 IF-ELSE 替代方案

2024-02-06

我想使用 BIRT 创建报告。我有 5 个 SQL 标准作为报告的参数。通常,当我有 3 个条件时,我会使用嵌套的 if-else 作为带有 javascript 的 WHERE 语句。

由于现在我有更多的标准,因此编写代码并检查可能性变得更加困难,特别是出于调试目的。

例如表员工的条件,有这 5 个条件:年龄、城市、部门、职称和教育程度。所有条件都是动态的,您可以将其留空以显示所有内容。

有谁知道这种方法的替代方法?


有一种神奇的方法可以处理这个问题,无需任何脚本,这使得报告更容易维护!我们可以使用这样的 SQL 查询:

SELECT *
FROM mytable
WHERE (?='' OR city=? )
AND (?=-1 OR age>? )
AND (?='' OR department=? )
AND (?='' OR title=? )

因此,每个条件都有两个数据集参数,其中“OR”子句允许在参数获取特定值、空值或空值时忽略条件。所有这些“OR”子句都使用常量值进行评估,因此查询的性能不会受到影响。

在此示例中,我们应该有 4 个报告参数、8 个数据集参数(每个报告参数绑定到 2 个数据集参数)和 0 个脚本。查看使用此方法的报告的实时示例here http://www.visioneo.org/interactive-birt-table.

如果还有更多标准,我建议使用存储过程,因此我们可以对每个标准仅使用一个数据集参数来执行相同的操作。

整数参数处理

如果我们需要处理整数列的“全部”值,例如年龄:我们可以将报告参数“age”声明为字符串类型,将数据集参数“age”声明为整数。然后,在数据集的参数选项卡中使用值表达式而不是“链接到报告参数”。例如,如果我们喜欢处理“所有”、“null”和空值的稳健输入,则需要输入以下表达式:

(params["age"].value=="all" || params["age"].value=="" || params["age"].value==null)?-1:params["age"].value

可以下载样本报告here http://www.visioneo.org/documents/10179/129221/visioneo-interactive-table.rptdesign/5426b058-10cc-4785-852e-590c8d6f1ead(4.3.1 版)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BIRT 中使用的多个 SQL 标准的 IF-ELSE 替代方案 的相关文章

  • date_sub 对于 mysql 可以,对于 postgresql 可以

    此查询适用于 mySQL 不适用于 Postgresql select from where id and h gt date sub now INTERVAL 30 MINUTE 错误是 Query failed ERREUR erreu
  • 在 MySQL 中对整数字段运行带引号的数字(字符串)查询时会发生哪些复杂情况

    在 SQL 中 不应引用整数 因为如果引用 它将是一个字符串 但我很好奇如果我这样做会出现什么问题 并发症 例如 SELECT FROM table WHERE id 1 正确的 vs SELECT FROM table WHERE id
  • 插入 Hive 表 - 非分区表到具有多个分区的分区表 - 无法插入目标表,因为列号/类型

    当我尝试插入分区表时 出现以下错误 SemanticException 错误 10044 第 1 23 行无法插入目标表 因为列号 类型不同 表 insclause 0 有 6 列 这 3 列已分区 我们不需要任何必须从中转储 存储的过滤器
  • 如何在 DB2 AS/400 中将小数字段转换为日期字段?

    我有一个 DECIMAL 字段 其中包含 AS400 格式的日期 1100614 我努力了 cast MYDATE as DATE 但我无法将 DECIMAL 转换为 DATE 而 DATE MYDATE 返回空值 如何将此字段转换为日期字
  • 如何使用“*ngIf else”?

    我正在使用 Angular 并且我想使用 ngIf else 自版本 4 起可用 在此示例中 div content here div div other content here div 我怎样才能实现相同的行为ngIf else 角度
  • PostgreSQL 中“-”处或附近的语法错误

    我正在尝试运行查询来更新用户密码 alter user dell sys with password Pass 133 但因为 它给了我这样的错误 ERROR syntax error at or near LINE 1 alter use
  • SQL Join 列上类似于另一列[重复]

    这个问题在这里已经有答案了 可能的重复 mysql连接查询使用like https stackoverflow com questions 1930809 mysql join query using like 我想要进行连接 其中一列包含
  • 可以使用表通配符创建 sql 查询吗?

    这可能是一个简单的问题 但我无法在网上找到解决方案 任何帮助将不胜感激 我正在尝试在 PHP 中创建一个 SQL 查询 并希望以某种方式将通配符应用于 TABLE 过滤器 可能是这样的 select from table 但是 到目前为止我
  • 加密数据库字段的好方法?

    我被要求加密数据库中的各种数据库字段 问题是这些字段在读取后需要解密 我在用着Django and SQL Server 2005 有什么好主意吗 See 在 SQL Server 2005 数据库中使用对称加密 https web arc
  • SQL 2008全文索引填充延迟

    我的经理说 在基础表数据更改后 可能需要一段时间才能更新全文搜索索引 例如 如果我有一张桌子Products有一个柱子Description我更新了该描述 然后我可能需要一些时间才能搜索该新描述 真的吗 这需要多长时间 SQL 2008 对
  • 如何通过子 POJO 的属性过滤复合 ManyToMany POJO?

    我有两个像这样的房间实体 Entity public class Teacher implements Serializable PrimaryKey autoGenerate true public int id ColumnInfo n
  • JDBC插入实数数组

    我试图将一个真实的数组插入到 postgresql 数组中 该表的定义是 String sqlTable CREATE TABLE IF NOT EXISTS ccmBlock sampleId INTEGER block REAL 插入内
  • JavaScript 中最长的通用前缀

    我正在尝试解决 Leet Code 挑战14 最长公共前缀 https leetcode com problems longest common prefix 编写一个函数来查找字符串数组中最长的公共前缀字符串 如果没有公共前缀 则返回空字
  • 在 SQL Server 上执行分页的最佳方式是什么?

    我有一个数据库超过200万记录 我需要执行分页以在我的 Web 应用程序上显示 该应用程序每页必须有 10 条记录DataGrid 我已经尝试使用ROW NUMBER 但是这种方式会选择所有 200 万条记录 然后只得到 10 条记录 我也
  • SQL Server 连接其他表中不存在的位置

    Service Asset AssetService Id Name Id Name AssetId ServiceId
  • 如何识别拼写不同的相似单词

    我想从数据库中过滤掉重复的客户名称 一位客户可能有多个同名但拼写差异不大的系统条目 这是一个示例 名为 Brook 的客户可能有 3 个系统条目 有了这个变化 布鲁克 贝尔塔 布鲁克 贝尔塔 比鲁克 贝尔塔 假设我们将此名称放入一个数据库列
  • 删除数据库中的行后如何重新排序ID

    我正在使用 C 来制作具有 sql 数据库的程序 在数据库中我有一个名为Workers 它有一个自动增量和主键ID column 当我删除一条记录时 ID 之间会出现间隙 删除记录后如何重新排序 ID UPDATE 我要做的就是找到记录后将
  • SQL 约束以防止根据列的先前值更新列

    是否可以使用检查约束 或其他一些技术 来防止在更新记录时设置与其先前值相矛盾的值 一个例子是 NULL 时间戳 表明发生了某些事情 例如 file exported 一旦文件被导出并且具有非 NULL 值 就不应再将其设置为 NULL 另一
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么
  • SQL 更新 - 更新选定的行

    我正在使用 SQL Server 2008 我有一个名为MYTABLE有两列 ID STATUS 我想编写一个存储过程来返回其记录STATUS是 0 但是这个存储过程必须更新STATUS返回行数为 1 如何在单个查询中执行此选择和更新操作

随机推荐

  • 无法安装自制程序

    我有一台相当新的 macbook pro 我只是尝试按照他们网站上的说明安装自制程序 usr bin ruby e curl fsSL https raw githubusercontent com Homebrew install mas
  • NSString 属性是复制还是只读?

    我看到很多讨论说我应该使用copyNSString 属性 因为它会阻止其他人在我背后更改它 但那我们为什么不直接设置readonly财产呢 Update 谢谢回答我的问题 但问题是 对于 NSString 属性 你总是不希望别人修改它 对吧
  • Swift UITableViewAutomaticDimension 不起作用

    我的 Swift 项目中有一张这样的表 var tableView UITableView tableView UITableView tableView dataSource self tableView delegate self ta
  • 如何在android中的通知中添加按钮?

    我的应用程序播放音乐 当用户通过从屏幕顶部 或通常从平板电脑屏幕的右下角 滑动打开通知屏幕时 我想向他们展示一个按钮来停止当前播放的音乐并在以下情况下重新启动 他们要 我不打算将小部件放在用户的主屏幕上 而只是放在通知中 我怎样才能做到这一
  • 如何使用无法删除的值初始化输入,但允许用户在输入后写入

    我正在使用 Angularjs 和 bootstrap 创建一些表单 我想使用无法删除的默认值来初始化输入 我不想使输入只读或禁用它 我想用一些无法删除的文本初始化输入 但让用户在该文本后写入 Example 代码 xyz 用户想要写入的任
  • 在新版本的 matplotlib 中使用 twinx 时定义宽高比

    当前版本的 matplotlib 不允许box forced再说了 我应该怎么做同样的事情answer https stackoverflow com a 24742133 11840592 我正在使用 matplotlib 3 1 0 当
  • 如何在CSS中倾斜虚线边框?

    我正在尝试使用 CSS 为邮件应用程序设计一个信封 我的客户想要这种方式的虚线边框 如何用 CSS 边框达到这种效果 您可能需要稍微调整一下颜色 enveloppe padding 1em border 16px solid transpa
  • 在 Storybook v6.4 中加载 css 模块类时出现问题

    我在让故事书与我的 Gatsby 项目中的 css 模块完美配合时遇到问题 我能够渲染按钮组件 但它没有添加任何我的样式 在检查元素时 我只得到undefined undefined从下面的代码 按钮 jsx import React fr
  • 如何关闭 Nifi 处理器计划

    我有 GetHttp 和 InvokeHttp Nifi 处理器 它们在 Nifi 中启动流 但我希望它们仅从 URL 获取一次并将数据传递到下一个进程 使用处理器配置 我无法关闭调度 如何实现这一点 Apache NiFi 处理器和流程专
  • lambda 表达式中的返回类型错误

    以下代码在 IntelliJ 和 Eclipse 中可以正常编译 但 JDK 编译器 1 8 0 25 会报错 首先 代码 import java util function Predicate public abstract class
  • 如何将多个收件人添加到mailitem.cc字段c#

    好的 我正在处理 Outlook msg 模板 以编程方式打开它们 根据我的数据库中的内容插入值 前任 当我想在 收件人 字段添加多个收件人时 而不是执行以下操作 mailitem To a b c 我执行下面的操作 这更简单 尤其是当我循
  • iPhone:线程+释放池+[对象释放]=“消息发送到已释放的实例”

    我在 iPhone 上运行一些小代码时遇到了麻烦 基本上 我只需按一个按钮 它就会调用runTest 它运行test后台线程上的方法 这就是我创建自动释放池的原因 如果我运行下面的代码 我会在控制台上收到一条漂亮的消息 2010 09 07
  • AWS 公共 IP 限制是多少? (公共IP不是弹性IP)

    对于给定的 AWS 区域 您可以使用的公共 IP 数量是否有限制 不是弹性 IP 注意 我知道您最多只能使用 5 个弹性 IP 但是 如果您在创建 AWS 实例时选择 自动分配 IP 您将获得一个 IP 该 IP 在重新启动时会发生变化 我
  • 有没有办法将 ProGuard 与 MonoDroid 一起使用?

    我们的开发团队刚刚 大部分 在 Visual Studio 中使用 MonoDroid 完成了一个 Android 应用程序 因为它与银行业务有关 所以我们想尝试对其进行混淆 以增加一些安全性 防止任何人试图反编译它 最初 我认为我可以只使
  • 如何验证域凭据(来自本机代码)?

    我想针对域控制器验证一组凭据 例如 Username joel Password splotchy Domain STACKOVERFLOW 在 NET 3 5 及更高版本中您可以使用PrincipalContext ValidateCre
  • 使用 Schedule 库安排异步函数。 (使用discord.py重写)

    我的上一篇文章被错误地标记为重复 我不想做 asyncio sleep 因为它在几周内太不准确了 我需要时间表库 我发现了一个类似的线程 如何使用计划库运行异步函数 https stackoverflow com questions 515
  • 如何保持带有长标签的ggplot的大小

    我有一个图 它是每种事件类型的数量的简单条形图 我需要将情节的标签放在情节下方 因为某些事件的名称很长并且会横向挤压情节 我尝试将标签移动到图下方 但现在当有很多事件类型时 它会被向上挤压 有没有办法拥有静态绘图大小 即条形图 以便长图例不
  • 将 Bazaar 存储库转换为 SVN

    我编写了一些利用 pysvn 来分析项目的 python 脚本 我想在一个现在位于 bazaar repo 中的项目上运行这些 所以我想知道如何在我的机器上获取 bazaar repo 的副本 然后将其转换为 svn 标准 以便 pysvn
  • 无法在 Visual Studio 2010 中编辑或添加参考文件的路径

    无法编辑或添加参考文件的路径 我无法编辑或添加参考文件的路径 我在工作中继承了一个项目 当我打开项目并转到 Visual Studio 2010 IDE 中的引用部分时 会出现一些黄色的小警告标志 表明那里列出的引用有问题 但是 当我单击该
  • BIRT 中使用的多个 SQL 标准的 IF-ELSE 替代方案

    我想使用 BIRT 创建报告 我有 5 个 SQL 标准作为报告的参数 通常 当我有 3 个条件时 我会使用嵌套的 if else 作为带有 javascript 的 WHERE 语句 由于现在我有更多的标准 因此编写代码并检查可能性变得更