我在SQL Server 2008中工作。我创建了一个存储过程,它从临时表中传递了多个值。以下是如何填充临时表的示例代码:
DECLARE @OwnerKey varchar(75) = '2,3,7,9,14,18,23,26,28'
/* ***** Temp Table ***** */
IF OBJECT_ID('Tempdb..#OwnerTable','U') IS NOT NULL
DROP TABLE #OwnerTable
CREATE TABLE #OwnerTable (Owner varchar(10))
INSERT INTO #OwnerTable
SELECT value from TTT.ParseList(@Ownerkey,',')
/* ***** Temp Table ***** */
后来我加入了这个表,以便引入多个所有者密钥:
SELECT T.Product, O.ownerid
FROM Table AS T
JOIN #OwnerTable AS O
ON O.Owner = T.Owner
我遇到的问题是这个存储过程正在报告中使用,我需要排除被选择的参数,因为它应该与其他键进行比较。这个问题可能很复杂,我会尽力回答问题。
基本上,如果用户选择参数2,我们希望将结果与除键号2之外的所有其他键进行比较,我需要在ssms中执行此操作。我试过Merge when not matched
,但无济于事。抱歉,这是一个很长的问题,是sql的新手。
答案 0 :(得分:2)
您可能想要这样做:
SELECT T.Product
,O.ownerid
FROM Table AS T
LEFT JOIN #OwnerTable AS O
ON O.Owner = T.Owner
WHERE O.ownerid IS NULL;
这样你就可以排除"匹配的记录。