在SQL Server中创建一个条件很少的表

时间:2015-02-09 17:54:15

标签: sql sql-server stored-procedures join sql-server-2008-r2

我在SQL Server中有3个表,如下所示:

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

基本上需要一个程序来比较ServiceIds, MaterialIdsEnquiryTableServiceTable之间的MaterialTable,然后返回带有ServiceNames和{{的结果表1}}。

我尝试了类似下面的内容:

MaterialNames

declare @serviceID int declare @matID int select sno, serviceid=@serviceID,materialid=@matID from dbo.enquirytable 变量返回为@serviceID, @matID

专家请帮忙。

我使用的是SQL Server 2008 R2。

此致

1 个答案:

答案 0 :(得分:2)

您必须使用CREATE PROC SQL关键字创建过程,然后使用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 E.EnqID=@enqID AND M.FyYear=@fyYear
END

您可以将此存储过程执行为

exec proc_NAME @enqID,@fyYear