如何在SAP SQVI中创建带复杂嵌套WHERE条件的查询?
SQVI复杂嵌套查询实现方案
SQVI原生支持该需求,无需额外权限
你要的硬编码嵌套AND/OR逻辑不需要导出到Excel处理,SQVI本身就能实现,操作步骤如下:
- 按常规流程完成基础配置:在SQVI中关联t0、t1两张表(关联条件为
t0.personID = t1.personID),选中name、birthYear、grade、county作为输出字段;不要将这四个字段加入「Selection Fields」列表,避免执行时弹出参数输入框。 - 进入条件编辑界面:点击工具栏的「Conditions」(中文环境为「条件」)按钮,打开筛选规则配置页:
- 先维护两个平级AND规则:固定值
t0~name = 'Bob'、t0~birthyear = 2000,两个规则的连接逻辑保持默认AND即可。 - 配置OR嵌套组:在第二个条件后插入左括号
(,新增规则t1~grade = 12,将该规则与前序规则的连接符改为OR,再新增规则t1~county <> 'Cook',最后插入右括号),该括号组与前两个规则的连接符保持默认AND。
注:部分低版本SAP不会直接显示插入括号的按钮,可在条件页顶部「Edit」(编辑)菜单下找到插入括号的选项。
- 先维护两个平级AND规则:固定值
- 保存查询后测试执行,确认返回结果和你写的SQL逻辑一致即可。如果要共享给同事,可通过SQ01将该SQVI查询发布到对应用户组,同事仅需查询执行权限,输入查询代码点击运行就能直接拿到结果,不需要手动输入任何筛选值。
低版本SQVI不支持括号编辑的替代方案
如果你用的SAP版本SQVI未开放嵌套括号编辑能力,也不需要申请开发权限或DBACOCKPIT权限,仅需申请SAP Query工具集的基础读权限即可完成配置:
- 需要开通的权限项(仅创建查询的管理员需要,执行的普通同事不需要):
- SQ03:用户组维护权限,用于将需要执行查询的同事加入同一用户组
- SQ02:信息集创建权限,用于配置表关联逻辑
- SQ01:查询创建/发布权限
- 操作逻辑:
- 在SQ03中新建公共用户组,把所有需要执行该查询的同事账号加入组内
- 在SQ02中新建信息集,按业务逻辑关联t0、t1两张表,生成后分配给上一步创建的用户组
- 在SQ01中基于该信息集创建查询,筛选条件页原生支持拖拽调整条件优先级、插入逻辑括号、自定义AND/OR组合,直接把四个固定筛选值维护好,关闭对应字段的「选择屏幕显示」开关,保存后同组用户即可直接执行。
所有固定筛选值直接维护在条件的固定值栏位,不要设置为选择变量,即可实现执行时无参数输入、直接返回符合规则结果的需求。
内容的提问来源于stack exchange,提问作者Simon Arneberg
相关产品推荐
相关产品推荐

