【问题标题】:Outsystems Advanced SQL外部系统高级 SQL
【发布时间】:2021-05-12 21:44:15
【问题描述】:

我将首先介绍我的业务逻辑。

我有一个名为 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

实际查询的结果:

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

提前致谢。

【问题讨论】:

    标签: sql outsystems


    【解决方案1】:

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

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

    【讨论】:

    • 您的意思是在 PIVOT 表之后。在同一个查询中?
    • 这个查询告诉你哪些机器是感兴趣的。您可以在旋转之前使用它来过滤掉其他不感兴趣的机器
    • 尚未完成。正在努力编写代码,但感谢您指路。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2019-02-12
    • 1970-01-01
    • 2011-05-27
    相关资源
    最近更新 更多