请问a.b.c作为一个分类的这种查询怎么写?

elxl 2004-11-15 11:30:44
列: a b c d
1 2 3 x
1 2 3 x
2 1 2 x
2 1 2 x
1 3 3 x
1 3 4 x
2 3 2 x

请问如何统计 a.b = 1.3 的数量?
又该怎么统计 a.b.c = 1.2.3 的数量?

请各位好心的大哥帮帮忙,谢谢!
...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
davorsuker39 2004-11-15
  • 打赏
  • 举报
回复
这个是邹大哥写的,看看吧!有帮助的
davorsuker39 2004-11-15
  • 打赏
  • 举报
回复
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_split]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_split]
GO

/*--得到字符串列表指定位置的字符

可以自定义字符串列表的分隔符
如果取数位置超出的范围,返回空字符串

--邹建 2004.07(引用请保留此信息)--*/

/*--调用示例

--测试数据
declare @t table(FITEM varchar(100))
insert @t select '100.120.10'
union all select '20.140.10'
union all select '150.124.150.10'

--查询
select fitem1=dbo.f_split(fitem,1,'.')
,fitem2=dbo.f_split(fitem,2,'.')
,fitem3=dbo.f_split(fitem,3,'.')
,fitem4=dbo.f_split(fitem,4,'.')
from @t
--*/
create function f_split(
@s varchar(8000), --字符串列表
@pos int, --取数位置
@splitchar varchar(10) --分隔符
)returns varchar(8000)
as
begin
declare @i int,@ilen int

select @i=charindex(@splitchar,@s),@ilen=len(@splitchar)
while @i>0 and @pos>1
select @s=substring(@s,@i+@ilen,8000)
,@i=charindex(@splitchar,@s)
,@pos=@pos-1
return(case @pos when 1
then case when @i>0 then left(@s,@i-1) else @s end
else '' end)
end
go
elxl 2004-11-15
  • 打赏
  • 举报
回复
不好意思,说得不清楚。我是想统计所有的类似 1.3 这样的分类。
也就是说事先不知道有没有 1.3 的存在的
hobbylu 2004-11-15
  • 打赏
  • 举报
回复
分开来不就是了
a=1 and b=2 and c=3
wjzhu219 2004-11-15
  • 打赏
  • 举报
回复
select a,b,count(*) from Table
where a='1' and b = '3'
group by a,b
having count(*)>4
elxl 2004-11-15
  • 打赏
  • 举报
回复
谢谢几位的热心帮忙,但是好像跟我要的不一样。
另外,还想多请教一个问题:
为了得到 count(*) > 4 的纪录该怎么做?

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧