これは非常に簡単な質問で、これと同じように単純な答えだと思いますが、これを理解することはできません。ユニークなキーから値を取り込む方法
私はそうのようなので、クエリが返すデータのようにモデル化し、一時テーブルがあります、数量等、1から2に増加するように私は一緒のように、行統合されることになっています
+--------+------+---------+---------+--------+-----------+--------+-----+
| Acct # | PO # | Store # | Order # | Line # | Ship Date | Item # | Qty |
+--------+------+---------+---------+--------+-----------+--------+-----+
| 0777 | 3340 | 648 | 1756013 | 1 | 11/23/16 | 100598 | 1 |
| 0777 | 3340 | 648 | 1756013 | 2 | 11/23/16 | 100597 | 1 |
| 0777 | 3340 | 648 | 1756013 | 3 | 11/23/16 | 100598 | 1 |
| 0777 | 3340 | 648 | 1756013 | 4 | 11/23/16 | 100596 | 1 |
| 0777 | 3341 | 720 | 1760001 | 1 | 12/01/16 | 150962 | 1 |
| 0777 | 3341 | 720 | 1760001 | 3 | 12/01/16 | 100596 | 1 |
| 0777 | 3341 | 720 | 1760001 | 4 | 12/01/16 | 150961 | 1 |
| 0777 | 3341 | 720 | 1760001 | 7 | 12/01/16 | 150961 | 1 |
| 0777 | 3341 | 720 | 1760001 | 8 | 12/01/16 | 156961 | 1 |
+--------+------+---------+---------+--------+-----------+--------+-----+
を注文番号で同じ品目番号ごとに表示されます。しかし、私は正確にどの順序で報告するライン#列を必要とする
+--------+------+---------+---------+-----------+--------+-----+
| Acct # | PO # | Store # | Order # | Ship Date | Item # | Qty |
+--------+------+---------+---------+-----------+--------+-----+
| 0777 | 3340 | 648 | 1756013 | 11/23/16 | 100598 | 2 |
| 0777 | 3340 | 648 | 1756013 | 11/23/16 | 100597 | 1 |
| 0777 | 3340 | 648 | 1756013 | 11/23/16 | 100596 | 1 |
| 0777 | 3341 | 720 | 1760001 | 12/01/16 | 150962 | 1 |
| 0777 | 3341 | 720 | 1760001 | 12/01/16 | 100596 | 1 |
| 0777 | 3341 | 720 | 1760001 | 12/01/16 | 150961 | 3 |
+--------+------+---------+---------+-----------+--------+-----+
:私は、私は、行番号を取り除くために持っていたので、データが返されたことをやるために働くが、この部分は、このようになりますしています私が知っているのは、STUFF()関数はOrder#に固有のものだけでなく、すべてのLine#を追加する点を除いてこれを行うことができるということです。ここに私のクエリは次のとおりです。
SELECT DISTINCT
SupplierAcctNumber AS 'Acct #',
BuyerPONumber AS 'PO #',
BuyerStoreNumber AS 'Store #',
SupplierOrderNumber AS 'Order #',
SupplierOrderLine =
STUFF((SELECT ',' + CAST(t.SupplierOrderLine AS VARCHAR)
FROM @temp t
WHERE t.SupplierOrderNumber = SupplierOrderNumber
AND t.BuyerItemNumber = BuyerItemNumber FOR XML PATH ('')),1,1,''),
SupplierShipDate AS 'Ship Date',
BuyerItemNumber AS 'Item #',
SUM(SupplierQtyOrdered) AS 'Qty'
FROM @temp
GROUP BY SupplierAcctNumber, BuyerPONumber, BuyerStoreNumber, SupplierOrderNumber,
SupplierOrderLine, SupplierShipDate, BuyerItemNumber
ORDER BY SupplierOrderNumber
そして、ここでは、私が得た結果である:
+--------+------+---------+---------+-------------------+-----------+--------+-----+
| Acct # | PO # | Store # | Order # | Line # | Ship Date | Item # | Qty |
+--------+------+---------+---------+-------------------+-----------+--------+-----+
| 0777 | 3340 | 648 | 1756013 | 1,2,3,4,1,3,4,7,8 | 11/23/16 | 100598 | 2 |
| 0777 | 3340 | 648 | 1756013 | 1,2,3,4,1,3,4,7,8 | 11/23/16 | 100597 | 1 |
| 0777 | 3340 | 648 | 1756013 | 1,2,3,4,1,3,4,7,8 | 11/23/16 | 100596 | 1 |
| 0777 | 3341 | 720 | 1760001 | 1,2,3,4,1,3,4,7,8 | 12/01/16 | 150962 | 1 |
| 0777 | 3341 | 720 | 1760001 | 1,2,3,4,1,3,4,7,8 | 12/01/16 | 100596 | 1 |
| 0777 | 3341 | 720 | 1760001 | 1,2,3,4,1,3,4,7,8 | 12/01/16 | 150961 | 3 |
+--------+------+---------+---------+-------------------+-----------+--------+-----+
ここでは、私が期待した結果は以下のとおりです。
+--------+------+---------+---------+-------------------+-----------+--------+-----+
| Acct # | PO # | Store # | Order # | Line # | Ship Date | Item # | Qty |
+--------+------+---------+---------+-------------------+-----------+--------+-----+
| 0777 | 3340 | 648 | 1756013 | 1,3 | 11/23/16 | 100598 | 2 |
| 0777 | 3340 | 648 | 1756013 | 2 | 11/23/16 | 100597 | 1 |
| 0777 | 3340 | 648 | 1756013 | 4 | 11/23/16 | 100596 | 1 |
| 0777 | 3341 | 720 | 1760001 | 1 | 12/01/16 | 150962 | 1 |
| 0777 | 3341 | 720 | 1760001 | 3 | 12/01/16 | 100596 | 1 |
| 0777 | 3341 | 720 | 1760001 | 4,7,8 | 12/01/16 | 150961 | 3 |
+--------+------+---------+---------+-------------------+-----------+--------+-----+
あなたが持っているものが混ざっ。あなたのstuffステートメントは 'FROM @ temp'でなければなりません。テーブルのエイリアスは必要ありません。メインクエリは' FROM @temp t'でなければなりません。 – ZLK
150961は最後のレコードのアイテム#ではないと思います156961 – scsimon
Woooow ....私はそれをキャッチしなかったと信じることはできません。ありがとうございました!私はあなたに信用を与えることができるように答えを提出できますか? – PhoenixFly