私はすでに日ごとの内訳であるビューを持っています(以下のクエリのByDay)。
ここで、キャンペーンが上位 10 の収益を生み出すキャンペーンに含まれる場合に、行が結果に含まれるようにフィルター処理したいと考えています。
私は望んでいたものを手に入れましたが、その過程でそれを行うための明白な/正しい方法をスキップしたかもしれないと感じています.
WITH T AS (
SELECT
ByDay.[Day]
,ByDay.[Campaign Name]
,ByDay.[Revenue USD]
FROM ByDay
WHERE ByDay.[Period]='Mar 2012'
),
TT AS (
SELECT
ByDay.[Campaign Name]
,SUM(ByDay.[Revenue USD]) [Sum Revenue USD]
FROM ByDay
WHERE ByDay.[Period]='Mar 2012'
GROUP BY ByDay.[Campaign Name]
)
SELECT * FROM (
SELECT
T.[Day]
,T.[Campaign Name]
,T.[Revenue USD]
,TT.[Sum Revenue USD]
,DENSE_RANK() OVER(ORDER BY TT.[Sum Revenue USD] DESC) AS R
FROM T
INNER JOIN TT ON T.[Campaign Name]=TT.[Campaign Name]
) TTT
WHERE R < 11
ORDER BY R
このようなものを取得する簡単な方法はありますか?