2010-11-12 88 views
0

我想在我的.NET應用程序中生成一個Winforms報告。我們的用戶希望知道特定焊工在兩個日期之間完成的焊接類型。用戶還需要證明此焊接已完成。前端很簡單,但我在如何獲取數據上掙扎。T-SQL有多個選擇的存儲過程

我有一個存儲過程,下面的SQL查詢:

輸入參數:@WelderNo INT, @StartDate DATETIME, @EndDate DATETIME

SELECT DISTINCT wi.wi_wpsnumbers 
FROM wi_weld_instance wi 
INNER JOIN wlds_weld_section ws ON wi.weldinstanceid = ws.weldinstanceid 
INNER JOIN erd_employee_resourcedetails e ON e.employeeid = ws.employeeid 
WHERE (wi.wi_completiondate Between @StartDate AND @EndDate) 
AND e.erd_welderno in (@WelderNo) 

現在我想在返回每個不同wi_wpsnumbers其他的一些信息。這證明焊接已經完成。查詢會是這個樣子:

輸入參數:@WelderNo INT, @StartDate DATETIME, @EndDate DATETIME, @wi_wpsnumber NVARCHAR(MAX)

SELECT TOP(1) e.fabemployeename, 
    erd_welderno, 
    (pm.PM_Number), 
    (mm.mm_assemblymark), 
    (wd.wd_number), 
    (wd.wd_length), 
    (wi.wi_completiondate) 
FROM wi_weld_instance wi 
INNER JOIN wlds_weld_section ws ON wi.weldinstanceid = ws.weldinstanceid 
INNER JOIN erd_employee_resourcedetails e ON e.employeeid = ws.employeeid 
INNER JOIN wd_weld_definition wd ON wd.welddefinitionid = wi.welddefinitionid 
INNER JOIN pm_project_map pm ON pm.projectmapid = wd.projectid 
INNER JOIN mm_mark_map mm ON wd.assemblyid = mm.markmapid 
WHERE (wi.wi_completiondate Between @StartDate AND @EndDate) 
    AND e.erd_welderno in (@WelderNo) AND wi.wi_wpsnumbers = @wi_wpsnumber 

如何創建一個存儲過程返回一個表,這兩個查詢的組合?我無法將這些查詢合併爲一個獨立的函數,並且返回多個相同的wi_wpsnumber。我正在查看臨時表,但是我不明白如何將這些查詢的結果插入同一行。感謝您的幫助

鏈接到數據庫圖表:http://i1215.photobucket.com/albums/cc510/gazamatazzer/DatabaseDiagram.jpg

+0

一些表格佈局將是有益的;-) – 2010-11-12 10:07:38

+0

數據庫圖表鏈接添加:) – gazamatazzer 2010-11-12 10:35:04

回答

3

您可以從SP返回兩個結果。
只需調用兩個選擇和使用NextResult在客戶端代碼來檢索第二個結果您已經閱讀後的第一個。

0
select x.*, y.* from 
(select * from xtable) x, (select * from ytable) y 

哪裏x.*給你所有的xtabley.*給所有從ytable

+0

這工作,但刪除了我想要的獨特性質。 – gazamatazzer 2010-11-12 10:34:33