私はこのような結果セットを取得するには、このクエリT-SQL:1つの以上の行を持って選択したパーティション
SELECT
PartGrp,VendorPn, customer, sum(sales) as totalSales,
ROW_NUMBER() OVER (PARTITION BY partgrp, vendorpn ORDER BY SUM(sales) DESC) AS seqnum
FROM
BG_Invoice
GROUP BY
PartGrp, VendorPn, customer
ORDER BY
PartGrp, VendorPn, totalSales DESC
を使用することができました。グループごとにグループ化された販売記録のリスト、製品ID(VendorPn
)、顧客、顧客の売上、およびグループと製品IDで区切られたシーケンス番号。
PartGrp VendorPn Customer totalSales seqnum
------------------------------------------------------------
AGS-AS 002A0002-252 10021013 19307.00 1
AGS-AS 002A0006-86 10021013 33092.00 1
AGS-AS 010-63078-8 10020987 10866.00 1
AGS-SQ B71040-39 10020997 7174.00 1
AGS-SQ B71040-39 10020998 2.00 2
AIRFRAME 0130-25 10017232 1971.00 1
AIRFRAME 0130-25 10000122 1243.00 2
AIRFRAME 0130-25 10008637 753.00 3
HARDWARE MS28775-261 10005623 214.00 1
M250 23066682 10013266 175.00 1
どのように私は1 seqnum
以上のものを持っている唯一のリターン行に設定し、結果をフィルタリングすることができますか?私は最初の結果セットの例のうち、この
PartGrp VendorPn Customer totalSales seqnum
------------------------------------------------------------
AGS-SQ B71040-39 10020997 7174.00 1
AGS-SQ B71040-39 10020998 2.00 2
AIRFRAME 0130-25 10017232 1971.00 1
AIRFRAME 0130-25 10000122 1243.00 2
AIRFRAME 0130-25 10008637 753.00 3
に見えるように、結果セットをしたいと思い、VendorPn
「B71040-39」と「0130から25」の行のみが複数の顧客が製品を購入しました。顧客が1人しかいないすべての製品が削除されました。私が望む結果セットは単にseqnum > 1
ではないことに注意してください。なぜなら私は今でも最初のパーティションはseqnum
です。このようになり、私はあなたのクエリを変更します
SELECT PartGrp,VendorPn, customer, sum(sales) as totalSales,
ROW_NUMBER() OVER (PARTITION BY partgrp,vendorpn ORDER BY SUM(sales) DESC) as seqnum
FROM BG_Invoice
GROUP BY PartGrp,VendorPn, customer
HAVING seqnum <> '1'
ORDER BY PartGrp,VendorPn, totalSales desc
がで、その後1つのより外側のクエリと注文をレイヤーすることができるはずですalliased t.seqnum。あなたはインナーオーダーを落とさなければならない。 – PCSgtL