SQL条件分类汇总

来源:百度知道 编辑:UC知道 时间:2024/06/15 01:59:21
系统环境:windows xp,office 2003,foxpro6.0
有一社区信息管理文件,位置:e:\社区管理\社区.xls,表内容如下:
户号 姓名 身份 收入 社区
001 name1 户主 800.00 社区a
001 name2 成员1 700.00 社区a
001 name3 成员2 700.00 社区a

003 name7 成员1 500.00 社区a
003 name8 户主 850.00 社区a
003 name9 成员2 700.00 社区b
003 name10 成员3 780.00 社区c

101 name11 户主 850.00 社区b
101 name12 成员1 700.00 社区b

103 name17 成员3 780.00 社区a
103 name18 户主 850.00 社区b
103 name19 成员1 700.00 社区b

201 name20 成员3 780.00 社区c
201 name21 户主 850.00 社区c
201 name22 成员1 700.00 社区c

202 name23 户主 850.00 社区c
202 name24 成员1 700.00 社区a
202 name25 成员3 780.00 社区b
需要解决的问题:
1.按社区统计每个家庭的总收入,即以户号为主要字段分类汇总,同一户号为一个家庭;
2.同一户号下有不同社区的家庭成员时,以户主所在的社区为准,同时修改其他家庭成员所在的社区与户主相同;
3.以户号分汇总家庭总收入时要求必须显示户主所在的行,即姓名字段必须显示户主姓名,并统计家庭成员数量,增加"count(*) as 人数"字段。统计结果按收入高低排序;
4.在"e:\社区管理\"文件夹下生成两个新的文件,"家庭收入.xls"文件存放各家庭收入,在同一

DECLARE @t TABLE(Groups char(2),Item varchar(10),Color varchar(10),Quantity int)
INSERT @t SELECT 'aa','Table','Blue', 124
UNION ALL SELECT 'bb','Table','Red', -23
UNION ALL SELECT 'bb','Cup' ,'Green',-23
UNION ALL SELECT 'aa','Chair','Blue', 101
UNION ALL SELECT 'aa','Chair','Red', -90

--汇总显示
SELECT Groups=CASE
WHEN GROUPING(Color)=0 THEN Groups
WHEN GROUPING(Groups)=1 THEN '总计'
ELSE '' END,
Item=CASE
WHEN GROUPING(Color)=0 THEN Item
WHEN GROUPING(Item)=1 AND GROUPING(Groups)=0 THEN Groups+' 合计'
ELSE '' END,
Color=CASE
WHEN GROUPING(Color)=0 THEN Color
WHEN GROUPING(Color)=1 AND GROUPING(Item)=0 THEN Item+' 小计'
ELSE '' END,
Quant