Maximo - Return 基于另一个字段的多个值,在域中使用 List Where 子句

Maximo - Return multiple values based on another field using List Where Clause in Domain

我知道我不能使用 Case 语句 return 多个值,但这是我可以解释我想要完成的事情的最佳方式。我正在尝试编写一个语句,其中我将根据在另一个字段中输入的内容 return 不同的值。我目前有这样的东西:

SELECT animal WHERE CASE WHEN :textbox is not null THEN (SELECT animal from animalsTable where animalType = :textbox ELSE (SELECT plant from plantsTable where plantType = 'edible')

所以基本上,我希望能够列出与用户在文本框中输入的内容相对应的所有动物,但如果他们没有在文本框中输入任何内容,那么我想向他们展示所有植物可食用。对于他们输入的每个值,我几乎总是 return 多个值。

例如,如果用户键入 'dog',那么我将 return 'dog' 和 'wolf'。所以这会导致问题,因为 case 语句是布尔值。我该如何解决这个问题?

谢谢。

您可以检查每个 table 的 textbox 值并合并结果:

select animal from animalsTable where animalType = :textbox 
and :textbox is not null
union all
select plant from plantsTable where plantType = 'edible' 
and :textbox is null

您可以创建一个包含所有查找值列表的 ALN 域。在这种情况下,动物和植物。然后根据您要过滤的关键字段创建一个引用 ALN 域的 table 域。您需要将此键作为单个值或以 space 或逗号分隔的多个值存储在描述字段中。

对于我们来说,我们使用了一个自定义字段(子类别),该字段显示了对资产部门编号使用 Table 域过滤的 ALN 域的有限查找。资产部门编号列在 ALN 域描述中。

ALN 域包含您的植物和动物值。 ALN 域的描述包含您的关键字段值。

如果资产部为空,则显示整个列表。

列表 where 子句如下所示:

domainid='CBRSUBCAT' and description like '%' || (select eq5 from asset where assetnum = :assetnum) || '%'

我使用了 like 这样我们就可以为一个子类别输入多个部门,并用逗号分隔。对于您,您可以根据需要使用描述 =(等于)。