我需要在 SQL Server 中查询以下格式的一些数据:
- 标识组价格
- 1个10
- 2个20
总和 30
1 B 6
- 2 乙 4
总和 10
1 C 100
- 2 C 200
- 总和 300
我正在考虑按照以下步骤进行操作:
- 查询一组
- 在其他查询中求和
- 使用联合运算符组合此结果集
- 对所有组执行步骤 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
我想我的查询中有一些问题,请在这里指导我。谢谢