2015-02-09 67 views
0

我在SQL Server中,如下3代表的表:创建SQL Server中几个条件

EnquiryTable

EndID FyYear SNo ServiceID MaterialID 
55 2015 1 1   1 
55 2015 2 5   3 

ServiceTable

ServiceID ServiceName 
1   ServiceA 
2   ServiceB 
3   ServiceC 
4   ServiceD 
5   ServiceE 

Material表:

MaterialID MaterialName 
1   MaterialA 
2   MaterialB 
3   MaterialC 

我需要从stored procedure返回如下表格,以便该表格最终有助于绑定gridview

结果表:

SNo ServiceName MaterialName 
1 ServiceA  MaterialA 
2 ServiceE  MaterialC 

基本上需要将从EnquiryTableServiceTableMaterialTable比较ServiceIds, MaterialIds,并用ServiceNamesMaterialNames返回回所得表的过程。

我试过类似如下:

declare @serviceID int 
declare @matID int 
select sno, [email protected],[email protected] from dbo.enquirytable 

@serviceID, @matID变量返回null

请专家帮忙。

我正在使用SQL Server 2008 R2。

问候

+0

您可能会发现回答这个有用https://msdn.microsoft.com/en-us/library/ms345415.aspx – 2015-02-09 18:01:42

回答

2

你必须创建使用SQL CREATE PROC关键字的程序,然后使用EXEC来执行存储过程。 您的选择查询和逻辑应该是存储过程的一部分。

CREATE PROC proc_NAME 
@enqID int, @fyYear int 
AS 
BEGIN 
    SELECT E.SNO , S.ServiceName, M.MaterialName 
    FROM EnquiryTable E 
    INNER JOIN Service S ON E.ServiceID = S.ServiceID 
    INNER JOIN Material M ON E.MaterialID = M.MaterialID 
    WHERE [email protected] AND [email protected] 
END 

可以执行该存储过程作为

exec proc_NAME @enqID,@fyYear 
+0

您好,感谢。我只能将enqID和fyYear作为params传递给过程。您可以在enquiryTable中看到enqID = 55和fyYear = 2015。通过这两个参数,我可以在EnquiryTable中获得2行,我需要使用服务和材料表中的服务和材料名称替换这两行中的服务ID,材料ID。你明白我想达到什么吗? – Anurag 2015-02-09 18:06:14

+0

查看修改答案 – HaveNoDisplayName 2015-02-09 18:08:47

+0

谢谢Piyush,我明白了。我非常了解如何创建一个存储过程,但只是写了这样的问题,因为我正在尝试几个东西。无论如何感谢答案,我会接受它。 – Anurag 2015-02-09 18:11:13