外系统高级 SQL
Outsystems Advanced SQL
我将从介绍我的业务逻辑开始。
我有一个名为 Machines 的实体。我将为每台机器分配 最多 50 个选项。在此查询中,我使用了 PIVOT,因此每台机器只能检索 一行 ,所有 选项(列) 的值为 0 或 1。
注意:我的输出结构已准备好 50 个选项。
SQL 查询 - 目标 1:检索每台机器有哪些选项
活性。 - 完成
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'
我将从介绍我的业务逻辑开始。
我有一个名为 Machines 的实体。我将为每台机器分配 最多 50 个选项。在此查询中,我使用了 PIVOT,因此每台机器只能检索 一行 ,所有 选项(列) 的值为 0 或 1。
注意:我的输出结构已准备好 50 个选项。
SQL 查询 - 目标 1:检索每台机器有哪些选项 活性。 - 完成
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'