高分求解sql,也可以使用proc或view只要能解决就行!有点难度,请高手指点!
生成数据表(moblieuser)的脚本如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[moblieuser]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[moblieuser]
GO
CREATE TABLE [dbo].[moblieuser] (
[id] [float] NULL ,
[moblie] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[password] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[ordercode] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[paytime] [smalldatetime] NULL ,
[status] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[result] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
数据如下:(精简)
id moblie password ordercode paytime status result
1990.0 13500057554 699704 MOVIE 20041124 NULL 000000
1993.0 13500057554 699704 MOVIE 20041124 1 null
1995.0 13500057554 699704 MOVIE 20041124 1 000000
2051.0 13500337201 741611 MUSIC 20041124 NULL null
2067.0 13500337201 741611 MUSIC 20041124 NULL 000000
2030.0 13500337201 741611 MUSIC 20041124 1 000000
5735.0 13500337201 191406 MUSIC 20041205 NULL 000000
7268.0 13455760459 754181 MOVIE 20041210 NULL 000000
7284.0 13455760459 NULL MOVIE 20041210 1 null
7284.0 13455760459 NULL MUSIC 20041210 1 000000
条件:ordercode字段表示栏目代码, MOVIE为电影频道,订阅收费10元,music为音乐频道,订阅收费5元
status字段为状态标志,只有两个状态,null表示订阅,1表示退订
result字段为处理标志,只有两个状态,000000表示处理成功,null表示处理失败
举例:用户13500057554在20041124日订阅(status为null(is not 1))MOVIE成功(result为000000),20041200对应的收入加10元,
如果不成功,不加钱,如果用户退订MOVICE并且成功,收入减10元,退订不成功,收入不减!
目标:统计生成moblieuser表中三天时间内每天收入表(income)
paytime money
20041124 0 注释0=(10-0-10+0+5-5)
20041205 5
20041210 5 注释5=(10-0-5)
请各位大虾看看测试,测试,贴出解决方案!分数不够还可以加!
如果有不清楚的地方,直接加我msn:showmeself@hotmail.com或QQ:39197106!也欢迎加我交流!