我看到了一些使用COALESCE和FOR XML的示例(似乎是更好的解决方案)来实现我要做的事情。但我无法完全掌握语法。
这是我的代码(我将只列出关键字段):
Table Fields
------ -------------------------------
Requisition ID, Number
IssuedPO ID, Number
Job ID, Number
Job_Activity ID, JobID (fkey)
RequisitionItems ID, RequisitionID(fkey), IssuedPOID(fkey), Job_ActivityID (fkey)
我需要一个查询,每行列出一个Requisition及其相关的Jobs和IssuedPOs。(Requisition编号以“R-”开头,Job编号以“J-”开头)
例如: R-123 | "PO1; PO2; PO3" | "J-12345; J-6780"
当然,Adam!这里有一个返回多行的查询。我必须使用外连接,因为并非所有的Requisitions都有分配给Jobs和/或IssuedPOs的RequisitionItems(在这种情况下,它们的fkey ID将为空)。
SELECT DISTINCT Requisition.Number, IssuedPO.Number, Job.Number
FROM Requisition
INNER JOIN RequisitionItem on RequisitionItem.RequisitionID = Requisition.ID
LEFT OUTER JOIN Job_Activity on RequisitionItem.JobActivityID = Job_Activity.ID
LEFT OUTER JOIN Job on Job_Activity.JobID = Job.ID
LEFT OUTER JOIN IssuedPO on RequisitionItem.IssuedPOID = IssuedPO.ID
FOR XML
更好(并且具有不需要任何实际过程代码的好处),即使它有点难以理解。 - Adam RobinsonFOR XML
的查询来连接值并将结果减少到每个申请一行。 - Adam Robinson