2015-02-09 61 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