我正在尝试在.NET应用程序中生成Winforms报告。我们的用户希望了解特定焊工在两个日期之间进行的焊接类型。用户还需要证明此焊接已完成。前端很简单,但我在如何获取数据方面苦苦挣扎。
我在存储过程中有以下SQL查询:
INPUT参数:@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
如何创建一个存储过程,返回一个包含这两个查询组合的表?我无法组合查询,因为distinct不起作用并返回多个wi_wpsnumbers相同。我正在查看临时表,但后来我不明白如何将这些查询的结果插入同一行。谢谢你的帮助
链接到数据库图表:http://i1215.photobucket.com/albums/cc510/gazamatazzer/DatabaseDiagram.jpg
答案 0 :(得分:3)
您可以从SP返回两个结果集 只需调用两个SELECT并在客户端代码中使用NextResult,在读完第一个结果集后检索第二个结果集。
答案 1 :(得分:0)
select x.*, y.* from
(select * from xtable) x, (select * from ytable) y
x.*
为您提供xtable
和y.*
的全部内容,ytable