0

私が持っている単純なテーブルクエリはこれを示しています:

salesAreaId areaDescription Total
----------- --------------- -----------
N1          North           5
SE8         Southeast       3
SW7         Southwest       2
NE6         Northeast       2
NW5         Northwest       1
S3          South           1
W4          West            1
E2          East            1

(8 row(s) affected)

これが私のコードです

SELECT st.salesAreaId, areaDescription,  
    COUNT(*) as Total
FROM store as st, salesArea as sa
WHERE st.salesAreaId = sa.salesAreaId
GROUP BY st.salesAreaId, areaDescription
ORDER BY 3 DESC
GO

私の質問は、COMPUTE を使用して合計列の下に総計行を追加する方法です。ORDER BY の後に COMPUTE を使用するように教えられました。

ROLLUP を使用したくありません。Total を個別に使用するには、SELECT 内である種のものが必要ですか。私が読んだすべての例は、このようにSUMの横に列名を入力するように言っています

助言がありますか?

4

1 に答える 1

1

これを試して:

SELECT st.salesAreaId, areaDescription,  
COUNT(*) as Total
FROM store as st, salesArea as sa
WHERE st.salesAreaId = sa.salesAreaId
GROUP BY st.salesAreaId, areaDescription
--order by would go here if needed - ordering by a constant won't have any effect though, so I've removed it from the statment
compute sum(count(*))

sumは任意の集計関数に置き換えることができます。助成金の合計を小計に使用したので、count(*)を使用しましたが、これを列名/必要なものに置き換えることができます。

ps。あなたのデータを見ると、あなたはエリアごとの小計の後であるように思われますか?もしそうなら、これを試してみてください:

SELECT st.salesAreaId
, areaDescription
, COUNT(*) as Total
FROM store as st
inner join salesArea as sa
on st.salesAreaId = sa.salesAreaId
GROUP BY st.salesAreaId, areaDescription
ORDER BY st.salesAreaId, areaDescription
COMPUTE sum(count(*)) BY areaDescription
于 2012-11-24T01:09:27.770 に答える