注册 登录
编程论坛 SQL Server论坛

[求助]关于分类统计及处理

随 缘 发布于 2007-10-30 18:06, 952 次点击

各位老师:
我有一张表如下:
单位 姓名 奖金
一班 张一 100
二班 李二 100
三班 王五 200
一班 300
四班 张三 150
二班 李四 120
四班 800


统计出如下结果:(如果上表中姓名为为空时,下表个人或集体栏填上集体,如果有姓名则按姓名填入,排序为:先集体再到个)
单位 个人或集体 奖金
一班 集体 300
一班 张一 100
二班 李二 100
二班 李四 120
三班 王五 200
四班 集体 800
四班 张三 150

谢谢各位

10 回复
#2
purana2007-10-30 18:43


create table #(
单位 varchar(20),
姓名 varchar(20),
奖金 int
)

insert # select '一班','张一',100
union all select '二班','李二',100
union all select '三班','王五',200
union all select '一班',null,300
union all select '四班','张三',150
union all select '二班','李四',120
union all select '四班',null,800

select 单位,姓名=isnull(姓名,'集体'),sum(奖金)
from #
group by 单位,姓名
order by 单位

drop table #


二班 李二 100
二班 李四 120
三班 王五 200
四班 集体 800
四班 张三 150
一班 集体 300
一班 张一 100

#3
随 缘2007-10-30 21:27

purana版主:您好,由于我对上面的用法不太了解,可否用在动态的表上吗?我上面的表的记录是不固定的,每天都在变动的。可否帮我解释一下用法呢?我主要是通过整理后在ASP页面上显示,谢谢。


[此贴子已经被作者于2007-10-30 21:28:37编辑过]

#4
purana2007-10-31 09:39
你增加就是了啊..
数据库当然是会添加..删除的啊..
难道有一成不变的数据库?
#5
随 缘2007-10-31 10:32
以下是引用purana在2007-10-30 18:43:32的发言:

insert # select '一班','张一',100
union all select '二班','李二',100
union all select '三班','王五',200
union all select '一班',null,300
union all select '四班','张三',150
union all select '二班','李四',120
union all select '四班',null,800

版主:您好,我是指这一部份,不知需不需要单独录入去处理?
#6
purana2007-10-31 10:40
你的表不是已经有这些数据了吗?.
#7
随 缘2007-10-31 11:22

版主:我是有这样式格的表,我对以下还是转不过脑筋,如果在ASP脚本中读取一个表格,我只能一条一条取出。但您的是一下出来的。以下的作用是不是建一个临时表格?
insert # select '一班','张一',100
union all select '二班','李二',100
union all select '三班','王五',200
union all select '一班',null,300
union all select '四班','张三',150
union all select '二班','李四',120
union all select '四班',null,800

#8
purana2007-10-31 12:42
完全不知道你说什么.
#9
bygg2007-10-31 13:57
他那是录入测试数据,和取数据没关系。
#10
随 缘2007-10-31 16:40
以下是引用bygg在2007-10-31 13:57:18的发言:
他那是录入测试数据,和取数据没关系。

原来如此,终于可以了。谢谢两位老师!!!

#11
ybq10142023-04-24 16:31
回复 楼主 随 缘
CLOSE DATABASES
CREATE CURSOR tt (单位 C(4),姓名 C(4),奖金 N(3))
INSERT INTO tt VALUES ("1班","张一",100)
INSERT INTO tt VALUES ("2班","李二",100)
INSERT INTO tt VALUES ("3班","王五",200)
INSERT INTO tt VALUES ("1班","",300)
INSERT INTO tt VALUES ("4班","张三",150)
INSERT INTO tt VALUES ("2班","李四",120)
INSERT INTO tt VALUES ("4班","",800)
SELECT * FROM tt  ORDER BY 单位,姓名 INTO cursor pp readwrite
replace ALL 姓名 WITH "集体" FOR EMPTY(姓名)
1