SQL Server で以下の形式のデータを照会する必要があります。
- ID グループ価格
- 1A10
- 2A20
合計 30
1B6
- 2B4
合計 10
1C 100
- 2C 200
- 合計 300
私は次の手順でそれを行うことを考えていました:
- 1 つのグループを照会する
- 他のクエリでは合計します
- Union 演算子を使用して、この結果セットを結合します
- すべてのグループに対してステップ 1 ~ 3 を実行し、最後にユニオンを使用してデータのすべてのサブセットを返します。
これを行うより良い方法はありますか?すぐに使用できる機能を使用している可能性がありますか? お知らせ下さい。
編集:
提案とコードサンプルに従って、このコードを試しました:
Select
Case
when id is null then 'SUM'
else CAST(id as Varchar(10)) end as ID,
Case when [group] is null then 'ALL' else CAST([group] as Varchar(50)) end as [group]
,Price from
(
SELECT Id, [Group],BGAApplicationID,Section, SUM(PrimaryTotalArea) AS price
FROM vwFacilityDetails
where bgaapplicationid=1102
GROUP BY Id, [Group],BGAApplicationID,Section WITH ROLLUP
) a
そして、このコードも:
Select Id, [Group],BGAApplicationID,Section, SUM(PrimaryTotalArea) AS price
From vwFacilityDetails
Where Not ([group] Is Null And id Is Null And BGAApplicationId is null and section is null) and BGAApplicationId=1102
Group By Id, [Group],BGAApplicationID,Section
With Rollup
結果では、データをグループ化しますが、すべてのレコードについて、次のように (上記の両方のコードで) 3 回表示します。
- 2879 既存施設 全校 25.00
- 2879 既存施設 全校 25.00
- 2879 既存施設 全校 25.00
- 2879 すべて 25.00
クエリに問題があると思います。こちらもご案内ください。ありがとう