Sql 使用或插入内部联接子句
我有一个动态查询,其中声明了3个不同的变量,如:Sql 使用或插入内部联接子句,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个动态查询,其中声明了3个不同的变量,如: DECLARE @JobNoteQuery NVARCHAR(MAX) = IIF(@JobNote = '%' , '' , ' INNER JOIN (SELECT ParentGuid FROM JobNotes JN WITH (NOLOCK) WHERE JN.Note LIKE ''%''+@JobNote+ ''%''
DECLARE @JobNoteQuery NVARCHAR(MAX) = IIF(@JobNote = '%' , '' , ' INNER JOIN (SELECT ParentGuid FROM JobNotes JN WITH (NOLOCK)
WHERE JN.Note LIKE ''%''+@JobNote+ ''%''
GROUP BY ParentGuid) JN ON P.ProjectGuid = JN.ParentGuid');
DECLARE @ContactQuery NVARCHAR(MAX) = IIF(@Contact = '%' , '' , ' LEFT JOIN(SELECT
[ProjectKey]
FROM [ProjectCustomerContact] AS [pcc]
LEFT JOIN [Contact] AS [c] ON [c].[ContactKey] = [pcc].[ContactKey]
WHERE [c].[LastName] LIKE ''%''+@LastName+''%'') AS [pcc] ON [pcc].[ProjectKey] = [p].[ProjectKey]')
DECLARE @CustomerQuery NVARCHAR(MAX) = IIF(@Customer = '%' , '' , 'LEFT JOIN(SELECT
[ProjectKey]
FROM [ProjectCustomer] AS [pc]
LEFT JOIN [Customer] AS [c] ON [c].[CustomerKey] = [pc].[CustomerKey]
WHERE([c].[Name] LIKE ''%''+@CustName+''%''
OR [c].[DBA] LIKE ''%''+@CustName+''%'')) AS [PC] ON [pc].[ProjectKey] = [p].[ProjectKey]')
所以在select查询中,我使用变量into JOIN子句,如:
...INNER JOIN [Region] AS [re] ON [a].[RegionKey] = [re].[RegionKey]
'+@JobNoteQuery+'
'+@ContactQuery+'
'+@CustomerQuery+'
WHERE...
我的问题是。如果我的树参数返回它们的值,我的意思是@JobNoteQuery、@ContactQuery和@CustomerQuery,总是返回内部联接和左联接,但如果其中一个没有值,则该值可以为null,它只会返回空列表,所以有没有办法在内部联接中使用OR子句?比如:
那不可能?将数据插入临时表,然后您可以开始使用提供的具有相同列数据类型的联合,只需获得3个查询中每个查询的俱乐部结果集。或者您在临时表中有数据,将所需的连接条件保留下来,或者内部连接在此时将是一件小事。除非您使用动态SQL,否则这是不可能的。
...INNER JOIN [Region] AS [re] ON [a].[RegionKey] = [re].[RegionKey]
OR
'+@JobNoteQuery+'
OR
'+@ContactQuery+'
OR
'+@CustomerQuery+'
WHERE...