外系统高级 SQL

Outsystems Advanced SQL

我将从介绍我的业务逻辑开始。

我有一个名为 Machines 的实体。我将为每台机器分配 最多 50 个选项。在此查询中,我使用了 PIVOT,因此每台机器只能检索 一行 ,所有 选项(列) 的值为 0 或 1。

注意:我的输出结构已准备好 50 个选项。

  1. SQL 查询 - 目标 1:检索每台机器有哪些选项 活性。 - 完成

  2. SQL 查询 - 目标 2:过滤具有 X 和 Y 选项的机器 活性。 -

我的实体图:

我的查询:

SELECT MachineID, MachineSN ,@StringIn


FROM (    
    SELECT {Machine}.[Id] as MachineID,
            {Options}.[Name] as OptionName,
            {MachineOption}.[OptionActive] as IsActive,
            {Machine}.[SNumber] as MachineSN

         
    FROM {MachineOption}
    INNER JOIN {Options} ON {Options}.[Id] = {MachineOption}.[OptionId]
    INNER JOIN {Machine} ON {Machine}.[Id] = {MachineOption}.[MachineId]     
    GROUP BY {Options}.[Name], {MachineOption}.[OptionActive], {Machine}.[SNumber], {Machine}.[Id]
    
        
    
) R
 Pivot (max(IsActive) for OptionName in (@StringIn)) as Columns Order By 1

实际查询结果:

我需要一些关于此查询的帮助。我已经尝试在内部查询中进行过滤,但我总是只得到一个只有一个选项。

提前致谢。

您可以搜索 table 两次(每个选项一次),然后加入两次搜索。例如,您可以这样做:

select distinct machineid
from machineoption x
join machineoption y on y.machineid = x.machineid and y.optionid = 'Y'
where x.optionid = 'X'