这句sql语句怎么写

didoleo 2006-10-17 02:45:12
类别 笔画数 笔画中文 数量
1005445 2 二画 1
1005445 3 三画 76
1005445 4 四画 14
1005445 5 五画 15
1005445 6 六画 2
1005445 7 七画 14
1005445 8 八画 17
1005445 9 九画 14
1005445 10 十画 17
1005445 11 十一画 16
1005445 12 十二画 13
1005445 14 十四画 15
1005550 2 二画 1
1005550 3 三画 12
1005550 4 四画 7
1005550 5 五画 14
1005550 6 六画 6
1005550 7 七画 10
1005550 8 八画 19
1005550 9 九画 9
1005550 10 十画 6
1005550 11 十一画 7
1005550 12 十二画 3
1005550 13 十三画 8
1005550 14 十四画 3
1005550 15 十五画 2
1005550 16 十六画 2
1005550 17 十七画 2
1005550 19 十九画 1

数据量在几千条

查询结果:要求在同一类别下数量累计每过100得一条记录如下:
1005445 2 二画 到 五画 106
1005445 6 六画 到 十四画 108
1005440 2 二画 到 十三画 102
1005440 14 十四画 到 十九画 10

...全文
1729 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
laola 2006-10-19
  • 打赏
  • 举报
回复
晕啦
lwzhk954 2006-10-19
  • 打赏
  • 举报
回复
俺 一看就晕了
of123 2006-10-19
  • 打赏
  • 举报
回复
数据库表设计不合理。要方便地实现你的需求,字段划分要更改:

1005445 2 02二画 1
1005445 3 03三画 76
1005445 4 04四画 14
1005445 5 05五画 15
1005445 6 06六画 2
1005445 7 07七画 14
1005445 8 08八画 17
1005445 9 09九画 14
1005445 10 10十画 17
......


SELECT 类别,Mid(MIN(笔画中文), 3) & ' 到 ' Mid(MAX(笔画中文), 3) AS 笔画起止, SUM(数量) GROUP BY 类别 HAVING SUM(数数量)> 100
xiaoku 2006-10-19
  • 打赏
  • 举报
回复
go on...
luckyprg 2006-10-19
  • 打赏
  • 举报
回复
为什么不把N画改为int型呢?这样判断就简单多了。
chenjunjarysky 2006-10-19
  • 打赏
  • 举报
回复
我们穿绿裤叉的只能感叹了!
errorlogin 2006-10-19
  • 打赏
  • 举报
回复
突然看到好多强人。。。
tomquan 2006-10-18
  • 打赏
  • 举报
回复
厉害,学习中...
CSDMN 2006-10-18
  • 打赏
  • 举报
回复
原来和hellowork(一两清风) 的算法基本一样

caobin518 2006-10-18
  • 打赏
  • 举报
回复
天呀.这种语句都能写出来!~~~~~~~~~~~神呀
CSDMN 2006-10-18
  • 打赏
  • 举报
回复
--原始数据
declare @test table (
类别 varchar(20),
笔画数 int,
笔画中文 nvarchar(20),
数量 int
)
insert @test select
'1005445',2,N'二画', 1
union all select
'1005445',3,N'三画', 76
union all select
'1005445',4,N'四画', 14
union all select
'1005445',5,N'五画', 15
union all select
'1005445',6,N'六画', 2
union all select
'1005445',7,N'七画', 14
union all select
'1005445',8,N'八画', 17
union all select
'1005445',9,N'九画', 14
union all select
'1005445',10,N'十画', 17
union all select
'1005445',11,N'十一画', 16
union all select
'1005445',12,N'十二画', 13
union all select
'1005445',14,N'十四画', 15
union all select
'1005550',2,N'二画', 1
union all select
'1005550',3,N'三画', 12
union all select
'1005550',4,N'四画', 7
union all select
'1005550',5,N'五画', 14
union all select
'1005550',6,N'六画', 6
union all select
'1005550',7,N'七画', 10
union all select
'1005550',8,N'八画', 19
union all select
'1005550',9,N'九画', 9
union all select
'1005550',10,N'十画', 6
union all select
'1005550',11,N'十一画', 7
union all select
'1005550',12,N'十二画', 3
union all select
'1005550',13,N'十三画', 8
union all select
'1005550',14,N'十四画', 3
union all select
'1005550',15,N'十五画', 2
union all select
'1005550',16,N'十六画', 2
union all select
'1005550',17,N'十七画', 2
union all select
'1005550',19,N'十九画', 1

--计算
declare @t table (
类别 varchar(20),
笔画数 int,
笔画中文 nvarchar(20),
数量 int,
分类 int,
总数 int
)

insert @t(类别,笔画数,笔画中文,数量)
select * from @test

declare @类别 varchar(20)
declare @数量 int
declare @分类 int
declare @总数 int

set @分类=0
set @总数=0

update @t
set
@分类=case when @类别=类别 and @总数<100 then @分类 else @分类+1 end,
@总数=case when @类别=类别 and @总数<100 then @总数+数量 else 数量 end,
@类别=类别,
分类=@分类,
总数=@总数

--结果
select a.类别,a.笔画数,a.笔画中文+N' 到 '+b.笔画中文,b.总数
from @t a,@t b,(
select 类别,分类,min(总数) as 总数1,max(总数) as 总数2 from @t
group by 类别,分类
) t
where a.类别=t.类别 and a.分类=t.分类 and a.总数=t.总数1
and b.类别=t.类别 and b.分类=t.分类 and b.总数=t.总数2

/*
输出结果
类别 笔画数 总数
-------------------- ----------- ------------------------------------------- -----------
1005445 2 二画 到 五画 106
1005445 6 六画 到 十四画 108
1005550 2 二画 到 十三画 102
1005550 14 十四画 到 十九画 10

(所影响的行数为 4 行)
*/


lzuyh 2006-10-18
  • 打赏
  • 举报
回复
学习
Well 2006-10-18
  • 打赏
  • 举报
回复
继续关注。。。
allright_flash 2006-10-18
  • 打赏
  • 举报
回复
难度很大,阿拉也不晓得
yjlhch 2006-10-18
  • 打赏
  • 举报
回复
学习
stou 2006-10-18
  • 打赏
  • 举报
回复
study
he_sl 2006-10-18
  • 打赏
  • 举报
回复
mark
sunbird69 2006-10-18
  • 打赏
  • 举报
回复
学习
fcuandy 2006-10-18
  • 打赏
  • 举报
回复
...
gangzichh 2006-10-18
  • 打赏
  • 举报
回复
UP 学习ing
加载更多回复(22)

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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