1

All_Sources次の列を持つ名前のテーブルがあります。

svcmonth
source
member
cost

TOP 5 PERCENTメンバーのコストの合計を最初の列として返し、テーブル内のすべてのメンバーのコストの合計を 2 番目の列として返すクエリを作成しようとしています。次の 2 つのクエリを使用して、これら 2 つの数値を個別に取得できます。

SELECT SUM(t1.fivepercentcost)
FROM
(SELECT
TOP 5 PERCENT member, 
SUM(cost) AS fivepercentcost
FROM dbo.All_Sources
WHERE svcmonth = '2013, 01' AND source = 'HC'
GROUP BY member
ORDER BY SUM(cost) DESC) t1

SELECT SUM(cost) AS 
FROM dbo.All_Sources
WHERE svcmonth = '2013, 01' AND source = 'HC'

しかし、私が立ち往生しているのは、これら 2 つのクエリをまとめて、2 つの結果が 2 つの列に並んで表示されるようにすることです。私は CTE とOVER()関数をうまく扱おうとしましたが、うまくいきませんでした。どんな助けでも大歓迎です。

編集:サンプルデータ

svcmonth   source   member   cost
2012, 12   HC       1        50
2012, 12   BA       1        40
2013, 01   HC       1        55
2013, 01   HC       2        100
2013, 01   BA       1        50
2013, 02   BA       2        45
4

2 に答える 2

0

次のように、2 つの変数を宣言し、個別にロードして両方を選択します。

DECLARE @TOP5 AS FLOAT
DECLARE @ALL AS FLOAT

SELECT @TOP5 = SUM(t1.fivepercentcost)
FROM
(SELECT
TOP 5 PERCENT member, 
SUM(cost) AS fivepercentcost
FROM dbo.All_Sources
WHERE svcmonth = '2013, 01' AND source = 'HC'
GROUP BY member
ORDER BY SUM(cost) DESC) t1

SELECT @ALL = SUM(cost) AS 
FROM dbo.All_Sources
WHERE svcmonth = '2013, 01' AND source = 'HC'

SELECT @TOP5, @ALL
于 2013-10-10T18:22:40.743 に答える