我将首先介绍我的业务逻辑。
我有一个名为Machines的实体。对于每台机器,我将为分配最多50个选项。在这个查询中,我使用了PIVOT,以便每台机器只能检索一行,所有的选项(列)的值都是0或1。
注意:我的输出结构已经准备好了50个选项。
我的实体图:

My查询:
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实际查询的结果:

我需要一些关于这个查询的帮助。我已经尝试在内部查询中筛选,但我总是只得到一个只有一个选项。
提前谢谢。
发布于 2021-05-12 21:50:35
您可以搜索表两次(每个选项一次),然后加入两个搜索。例如,您可以:
select distinct machineid
from machineoption x
join machineoption y on y.machineid = x.machineid and y.optionid = 'Y'
where x.optionid = 'X'https://stackoverflow.com/questions/67511351
复制相似问题