如题!浏览过XX商品的人还浏览过XX商品数据库如何设计?数据如何统计?
解决方案 »
- 我只想要SQL2000里DATETIME类型中的小时、分钟,怎么办?
- 导入数据性能问题
- sqlseveral2005附加错误
- 如何取进的最小时间,出的最大时间
- 如何提高这句Sql语句的效率?急!!!谢谢
- 用文件与文件组备份的数据,没有备份日志,有什么办法恢复数据
- 奇怪的SQL安装问题,大家帮帮我!
- 关于中文的问题,请问" select N'哈' "的“N” 是什么
- 在SQL SERVER中,如果用TEXT和用NUMERIC到底回有多大区别?有没有人做测试的啊?
- 为SqlServer 添加一个登陆账号,这个账号可以修改自己的密码应该赋予什么权限
- datetime类型的索引问题
- 执行一个存储过程,能否实现同时返回几个值和行集?
------ -----
1 111
1 112
1 113
2 110
2 111
2 113
3 115
3 116
4 118
5 119
5 111
6 120Select Top 5 SpID,Count(SpID) AS SpCount
From SPLog
Where UserID in (Select UserID from SPLog Where SpID=111)
Group By userCD
Order By SpCount desc,SpID Desc结果:111 3
113 2
119 1
112 1
110 1这个方法不知道科学不?高手指点一下!另外,怎么在结果中排除商品 111
水平太差,见笑了!呵呵
---创建测试数据
create table 浏览表(UserID int,SpID int)
insert 浏览表 select 1,111
union all select 1,112
union all select 1,113
union all select 2,110
union all select 2,111
union all select 2,113
union all select 3,115
union all select 3,116
union all select 4,118
union all select 5,119
union all select 5,111
union all select 6,120
---创建测试数据
select * from 浏览表
---创建函数
create function dbo.Fn_Test(@UserID int)
returns varchar(8000)
as
begin
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+','+cast(SpID as varchar) from 浏览表 where UserID=@UserID
return stuff(@sql,1,1,'')
end
go
---调用函数
Select UserID,dbo.Fn_Test(UserID) as SpID from 浏览表 group by UserID
/*
UserID SpID
----------- ---------------
1 111,112,113
2 110,111,113
3 115,116
4 118
5 119,111
6 120(所影响的行数为 6 行)
*/
Select UserID,dbo.Fn_Test(UserID) as SpID from 浏览表 where UserID=1 group by UserID
/*
UserID SpID
----------- ------------
1 111,112,113(所影响的行数为 1 行)*/