我可以根据参数值添加内连接或左连接或右连接。我现在唯一的方法就是编写像
这样的动态查询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
答案 0 :(得分:0)
你能不能只使用LEFT OUTER JOIN?
SELECT PM.*, pou.ProductNumber
FROM dbo.Products PM LEFT OUTER JOIN ProductOrgUnit pou ON
PM.ProductNumber = pou.ProductNumber
这将返回Products中的所有记录,如果存在匹配的记录,则仅返回ProductOrgUnit中的数据(否则pou字段在结果集中将为null)。
或者你可以在你的sproc中有两个单独的查询,并使用T-SQL IF语句来选择要运行的查询。