1

我有两张桌子

销售订单

  • SO编号
  • SO公司代码
  • SOItemNumber
  • SOWorkFlowLastCode
  • SOWorkFlowNextCode
  • 单号
  • SOItemDescription
  • SORequestNumber
  • SORequestQuantity
  • SOD日期更新

采购订单

  • 订单号
  • POItemNumber
  • PO公司代码
  • PO数量
  • PO交货日期
  • POWorkFlow下一个代码

我正在尝试编写一个查询来查找所有具有 SOWorkFlowLastCode = 980 和 SOWorkFlowNextCode = 999 的销售订单,SODateUpdated 是今天。

然后查找 POItemNumber = SOItemNumber 和 POCompanyCode = SOCompanyCode 和 POWorkFlowNextCode != 999 的所有采购订单

以上对我来说都很容易。

困难的部分是同一项目编号可以有 0 到多个采购订单,我需要将所有这些采购订单放在同一行。

4

2 回答 2

0

我最终使用了两个临时表。一个用于满足标准的所需销售订单,并带有一个名为 PODetails 的附加列。然后有另一个临时表,它提取了所有符合条件的采购订单。

从那里我对销售订单临时表进行了更新,将 PODetails 设置为等于采购订单临时表中的 STUFF,获取采购订单编号、数量和日期,并将它们转换为 VARCHAR,其中临时表项目编号匹配 FOR XML PATH( '')

然后我可以从销售订单临时表中选择 * 以获得完整结果。

谢谢

于 2013-09-26T21:21:13.317 回答
0
SELECT col1, col2, col3, dbo.GetSalesOrders(id) as sales_orders

CREATE FUNCTION GetSalesOrders(@id int)
RETURNS VARCHAR(MAX)
AS
BEGIN
   DECLARE @result VARCHAR(max)
   SET @result = ''
   SELECT @result = @result + orderNumber + ', ' FROM salesItems WHERE someID = @id
   IF (@result <> '') SET @result = LEFT(@result, LEN(@result) -1)
   RETURN @result
END
于 2013-09-25T20:50:13.440 回答