create table tt
(产地 char(8),水果 char(8),重量 int )
insert tt values('北方','香蕉',3)
insert tt values('北方','水蜜桃',2)
insert tt values('南方','桔子',3)
insert tt values('北方','水蜜桃',5)
insert tt values('南方','香蕉',3)
insert tt values('南方','水蜜桃',6)
insert tt values('北方','桔子',8)
select * from tt
select 产地,水果,sum(重量) 总重量 from tt group by 产地,水果 with rollup运行以后结果如下:产地 水果 总重量
-------- -------- -----------
北方 桔子 8
北方 水蜜桃 7
北方 香蕉 3
北方 NULL 18
南方 桔子 3
南方 水蜜桃 6
南方 香蕉 3
南方 NULL 12
NULL NULL 30(所影响的行数为 9 行)
现在我想问的是如何将
1、第四行的"null"换成小计,即北方的水果共18斤。
2、第八行的"null"换成小计,即南方的水果共12斤。
3、最后一行的"null" 换成 "总计" ,即 总计 30 斤水果 。
谢谢
(产地 char(8),水果 char(8),重量 int )
insert tt values('北方','香蕉',3)
insert tt values('北方','水蜜桃',2)
insert tt values('南方','桔子',3)
insert tt values('北方','水蜜桃',5)
insert tt values('南方','香蕉',3)
insert tt values('南方','水蜜桃',6)
insert tt values('北方','桔子',8)
select * from tt
select 产地,水果,sum(重量) 总重量 from tt group by 产地,水果 with rollup运行以后结果如下:产地 水果 总重量
-------- -------- -----------
北方 桔子 8
北方 水蜜桃 7
北方 香蕉 3
北方 NULL 18
南方 桔子 3
南方 水蜜桃 6
南方 香蕉 3
南方 NULL 12
NULL NULL 30(所影响的行数为 9 行)
现在我想问的是如何将
1、第四行的"null"换成小计,即北方的水果共18斤。
2、第八行的"null"换成小计,即南方的水果共12斤。
3、最后一行的"null" 换成 "总计" ,即 总计 30 斤水果 。
谢谢
create table tt
(产地 char(8),水果 char(8),重量 int )
insert tt values('北方','香蕉',3)
insert tt values('北方','水蜜桃',2)
insert tt values('南方','桔子',3)
insert tt values('北方','水蜜桃',5)
insert tt values('南方','香蕉',3)
insert tt values('南方','水蜜桃',6)
insert tt values('北方','桔子',8)
select CASE WHEN (GROUPING(产地) = 1) THEN '总计'
ELSE ISNULL(产地, 'UNKNOWN')
END AS 产地,
CASE WHEN (GROUPING(水果) = 1) THEN '小计'
ELSE ISNULL(水果, 'UNKNOWN')
END AS 产地,sum(重量) 总重量 from tt group by 产地,水果 with rollup /*
产地 产地 总重量
-------- -------- -----------
北方 桔子 8
北方 水蜜桃 7
北方 香蕉 3
北方 小计 18
南方 桔子 3
南方 水蜜桃 6
南方 香蕉 3
南方 小计 12
总计 小计 30(9 行受影响)*/drop table TT
go
create table tt
(产地 char(8),水果 char(8),重量 int )
insert tt values('北方','香蕉',3)
insert tt values('北方','水蜜桃',2)
insert tt values('南方','桔子',3)
insert tt values('北方','水蜜桃',5)
insert tt values('南方','香蕉',3)
insert tt values('南方','水蜜桃',6)
insert tt values('北方','桔子',8)
SELECT CASE WHEN (GROUPING(产地) = 1) THEN N'总计'
ELSE ISNULL(产地, 'UNKNOWN')
END AS 产地 ,
CASE WHEN (GROUPING(水果) = 1) THEN N'小计'
ELSE ISNULL(水果, 'UNKNOWN')
END AS 水果,
SUM(重量 ) AS 重量
FROM tt
GROUP BY 产地, 水果 WITH ROLLUP
/*
产地 水果 重量
-------- -------- -----------
北方 水蜜桃 7
北方 香蕉 3
北方 桔子 8
北方 小计 18
南方 水蜜桃 6
南方 香蕉 3
南方 桔子 3
南方 小计 12
总计 小计 30(9 個資料列受到影響)
*/
if object_id('tt')is not null drop table tt
go
create table tt
(产地 char(8),水果 char(8),重量 int )
insert tt values('北方','香蕉',3)
insert tt values('北方','水蜜桃',2)
insert tt values('南方','桔子',3)
insert tt values('北方','水蜜桃',5)
insert tt values('南方','香蕉',3)
insert tt values('南方','水蜜桃',6)
insert tt values('北方','桔子',8) select * from (
select 产地,水果,sum(重量) 总重量 from tt group by 产地,水果
union all
select 产地,水果=max('合计'),sum(重量) 总重量 from tt group by 产地
union all
select 产地='总计',null,sum(重量) 总重量 from tt
)t
order by 产地,charindex('合计',水果) 产地 水果 总重量
-------- -------- -----------
北方 桔子 8
北方 水蜜桃 7
北方 香蕉 3
北方 合计 18
南方 香蕉 3
南方 水蜜桃 6
南方 桔子 3
南方 合计 12
总计 NULL 30(9 行受影响)
select CASE WHEN (GROUPING(产地) = 1) THEN '总计'
ELSE ISNULL(产地, 'UNKNOWN')
END AS 产地,
CASE WHEN (GROUPING(产地) = 1) THEN '总计' WHEN (GROUPING(水果) = 1) THEN '小计' WHEN (GROUPING(水果) = 1) THEN '总计'
ELSE ISNULL(水果, 'UNKNOWN')
END AS 产地,
sum(重量) 总重量 from tt group by 产地,水果 with rollup /*
产地 产地 总重量
-------- -------- -----------
北方 桔子 8
北方 水蜜桃 7
北方 香蕉 3
北方 小计 18
南方 桔子 3
南方 水蜜桃 6
南方 香蕉 3
南方 小计 12
总计 总计 30(9 行受影响)
*/
if object_id('tt')is not null drop table tt
go
create table tt
(产地 char(8),水果 char(8),重量 int )
insert tt values('北方','香蕉',3)
insert tt values('北方','水蜜桃',2)
insert tt values('南方','桔子',3)
insert tt values('北方','水蜜桃',5)
insert tt values('南方','香蕉',3)
insert tt values('南方','水蜜桃',6)
insert tt values('北方','桔子',8) select * from (
select 产地,水果,sum(重量) 总重量 from tt group by 产地,水果
union all
select 产地,水果=max('小计'),sum(重量) 总重量 from tt group by 产地
union all
select 产地='总计','总计',sum(重量) 总重量 from tt
)t
order by 产地,charindex('小计',水果) 产地 水果 总重量
-------- -------- -----------
北方 桔子 8
北方 水蜜桃 7
北方 香蕉 3
北方 小计 18
南方 香蕉 3
南方 水蜜桃 6
南方 桔子 3
南方 小计 12
总计 总计 30(9 行受影响)
create table tt
(产地 char(8),水果 char(8),重量 int )
insert tt values('北方','香蕉',3)
insert tt values('北方','水蜜桃',2)
insert tt values('南方','桔子',3)
insert tt values('北方','水蜜桃',5)
insert tt values('南方','香蕉',3)
insert tt values('南方','水蜜桃',6)
insert tt values('北方','桔子',8)
select * from tt
select
CASE WHEN (GROUPING(产地) = 1) THEN '总计'
ELSE ISNULL(产地, 'UNKNOWN')
END AS 产地,
CASE WHEN (GROUPING(产地) = 1) THEN '总计' WHEN (GROUPING(水果) = 1) THEN '小计' WHEN (GROUPING(水果) = 1) THEN '总计'
ELSE ISNULL(水果, 'UNKNOWN')
END AS 产地,
sum(重量) 总重量 from tt group by 产地,水果 with rollup
产地 产地 总重量
-------- -------- -----------
北方 桔子 8
北方 水蜜桃 7
北方 香蕉 3
北方 小计 18
南方 桔子 3
南方 水蜜桃 6
南方 香蕉 3
南方 小计 12
总计 总计 30(所影响的行数为 9 行)
create table tt
(产地 char(8),水果 char(8),重量 int )
insert tt values('北方','香蕉',3)
insert tt values('北方','水蜜桃',2)
insert tt values('南方','桔子',3)
insert tt values('北方','水蜜桃',5)
insert tt values('南方','香蕉',3)
insert tt values('南方','水蜜桃',6)
insert tt values('北方','桔子',8)
select
CASE WHEN (GROUPING(产地) = 1) THEN '总计' ELSE 产地 END AS '产地',
CASE WHEN (GROUPING(水果) = 1) THEN '小计' ELSE 水果 END AS '水果',
sum(重量) 总重量
from
tt
group by
产地,水果 with rollup
sum(重量) 总重量
from tb
group by 产地,水果 with rollup
select * from (
select 产地,水果,sum(重量) 总重量 from tt group by 产地,水果
union all
select 产地, '小计' as 水果,sum(重量) 总重量 from tt group by 产地
union all
select '总计','总计',sum(重量) 总重量 from tt
)tt
order by 产地,charindex('小计',水果)