如何根据存储过程中传递的参数添加联接
我可以根据参数值添加内部联接、左联接或右联接吗?现在我唯一的方法是编写一个动态查询,就像
set @sql = 'select * from dbo.products PM(nolock)
'+ case when @orgunit is not null then ' join productorgunit pou on PM.ProductNumber = pou.ProductNumber '
else ''
end
+ '
Exec(@sql).
我希望有类似的东西
Select * from dbo.products PM(nolock)
case when @orgunit is not null then join productorgunit pou on PM.ProductNumber = pou.ProductNumber
end
Can I add a inner join or left join or right join based on parameter value. The only way right now I have is writing a dynamic query like
set @sql = 'select * from dbo.products PM(nolock)
'+ case when @orgunit is not null then ' join productorgunit pou on PM.ProductNumber = pou.ProductNumber '
else ''
end
+ '
Exec(@sql).
I hope there is something like
Select * from dbo.products PM(nolock)
case when @orgunit is not null then join productorgunit pou on PM.ProductNumber = pou.ProductNumber
end
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不能只使用 LEFT OUTER JOIN 吗?
这将返回 Products 中的所有记录,并且仅在存在匹配记录时才返回 ProductOrgUnit 中的数据(否则结果集中的 pou 字段将为 null)。
或者,您可以在存储过程中有两个单独的查询,并使用 T-SQL IF 语句来选择要运行的查询。
Can you not just use a LEFT OUTER JOIN?
That will return all records from Products, and only return data from ProductOrgUnit if there is a matching record (otherwise the pou fields will be null in the resultset).
Alternatively you could have two separate queries in your sproc and use a T-SQL IF statement to select which one to run.