一点背景。来自多个数据库的多个表具有相同的模式。因此,当我查询以选择具有相同主代码的所有列时(在表中,主代码位于名为CATMASTRCAT的列中),相同的代码将有多个行,它们唯一相同的是CATMASTRCAT列。这适用于单个主代码(在下面的脚本中,如果我将变量设置为031325-002-70,它将显示具有不同组织和其他相同数据的多行,这是期望的结果)。
问题是,是否有办法让多个主代码作为变量的输入?我计划将其创建为存储过程。
这是我的SQL脚本:DECLARE @ProductNumber AS VARCHAR(1000)
SET @ProductNumber = ('031325-002-70')
SELECT ITEMS
,ORGANIZATION
FROM [EU].[dbo].[SOMETHING14]
WHERE ITEMS in (@ProductNumber)
UNION
SELECT ITEMS
,ORGANIZATION
FROM [EU].[dbo].[SOMETHING12]
WHERE ITEMS in (@ProductNumber)
UNION
SELECT ITEMS
,ORGANIZATION
FROM [EU].[dbo].[SOMETHING11]
WHERE ITEMS IN (@ProductNumber)
请随意澄清任何其他需要的数据。我对SQL相当陌生,只是自学。你也可以告诉我错误的代码,哈哈,以及如何做得更好。
谢谢!
注:附查询结果图片
是的,最好的方法是使用表值参数,然后将where子句改为
WHERE catmastrcat IN (SELECT catmastrcat FROM @tablevaluename)
或者您可以使用内部连接——根据索引和其他问题,这可能更快——其代码如下所示
JOIN @tablevaluename tv ON AJF_CATMASTER.catmastrcat = tv.catmastrcat