1

私は2つのテーブルを持っています

販売注文:

  • SO番号
  • SO会社コード
  • SOItemNumber
  • SOWorkFlowLastCode
  • SOWorkFlowNextCode
  • SOロット番号
  • SOItemDescription
  • SORequestNumber
  • SORequest数量
  • SODateUpdated

注文書:

  • PO番号
  • POItemNumber
  • PO会社コード
  • PO数量
  • PO配達日
  • POWorkFlowNextCode

SOWorkFlowLastCode = 980 および SOWorkFlowNextCode = 999 で、SODateUpdated が今日であるすべての販売注文を検索するクエリを作成しようとしています。

次に、POItemNumber = SOItemNumber および POCompanyCode = SOCompanyCode および POWorkFlowNextCode != 999 であるすべての発注書を探します。

上記はすべて私にとって簡単です。

難しいのは、同じ品目番号に対して 0 から複数の発注書が存在する可能性があり、それらの発注書すべてを同じ行に入れる必要があることです。

4

2 に答える 2

0

私は2つの一時テーブルを使用することになりました。PODetails と呼ばれる追加の列を使用して、基準を満たす目的のセールス オーダー用の 1 つ。次に、基準を満たすすべての発注書を取得する別の一時テーブルがありました。

そこから、PODetails を発注書一時テーブルの STUFF に等しく設定して、発注書番号、数量、および日付を取得し、一時テーブルのアイテム番号が一致する VARCHAR にキャストして、販売注文一時テーブルを更新しました FOR XML PATH( '')

次に、* From the Sales Order temp テーブルを選択して、完全な結果を取得します。

ありがとう

于 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 に答える