如何根据存储过程中传递的参数添加连接

时间:2011-10-04 16:33:35

标签: tsql sql-server-2000

我可以根据参数值添加内连接或左连接或右连接。我现在唯一的方法就是编写像

这样的动态查询
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  

1 个答案:

答案 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语句来选择要运行的查询。