在IN子句中使用变量

时间:2014-06-02 14:11:05

标签: sql visual-studio variables report

我是编写visual studio报告并将它们链接到存储过程的新手。我已经选择了像表格中的1个变量这样的简单位,它可以等于存储过程中的一个变量,例如开始数据或结束日期。

我有一份报告的下拉列表,用户可以在其中选择公司名称,他们可以勾选多个公司名称。

我已将公司名称设置为与我的sql中的变量相等但不知道如何将其全部链接在一起,因为它不会将值从下拉列表转换为字符串。

这是我的查询的简化版

Declare @ContactID int
Declare @CompanyName nvarchar(max)



set @CompanyName = @CompanyNameParam
set @ContactID = (select ContactID from Company co inner join Contacts c on c.CompanyID = co.CompanyID where CompanyName = @CompanyName)


select *
from company co inner join contacts c on c.CompanyID = co.CompanyID
where ContactID in (@ContactID)

1 个答案:

答案 0 :(得分:1)

据推测,您需要多个联系人。如果是这样,请使用表变量。对于您的示例代码:

Declare @CompanyName nvarchar(max);
set @CompanyName = @CompanyNameParam;

declare @Contacts table (
    ContactId int
);

insert into @Contacts(ContactId)
    select ContactID
    from Company co inner join
         Contacts c
         on c.CompanyID = co.CompanyID
    where CompanyName = @CompanyName;

select *
from company co inner join contacts c on c.CompanyID = co.CompanyID
where ContactID in (select ContactId from @Contacts);