sql 语句求助

icemanpro 2011-04-15 11:03:22
现有一表内容如下

create table #a(kh varchar(5),yi varchar(6),er varchar(4),sa varchar(4),si varchar(4),kc int)
insert into #a
select 'D0211','000002','0001', '0000', '0002', 1
union
select 'D0211', '000002', '0001', '0000', '0002', 7
union
select 'D0211', '000002', '0001', '0000', '0002',12
union
select 'D0211', '000002', '0001', '0000', '0002', 19
union
select 'D0211', '000002', '0001', '0000', '0002', 26
union
select 'D0211', '000002', '0001', '0000', '0002', 27
union
select 'D0211', '000002', '0001', '0000', '0003', 28
union
select 'D0211', '000002', '0001', '0000', '0003', 29
union
select 'D0211', '000002', '0001', '0000', '0003', 30
union
select 'D0211', '000002', '0001', '0000', '0003', 34
union
select 'D0211', '000002', '0001', '0000', '0003', 40
union
select 'D0211', '000002', '0001', '0000', '0003', 45
union
select 'D0211', '000002', '0001', '0000', '0003', 52
union
select 'D0211', '000002', '0001', '0000', '0002', 53
union
select 'D0211', '000002', '0001', '0000', '0002', 59


现想从该表中生成如下数据,应该如何写sql语句??

ykkh yi er sa si min max
d0211 000002 0001 0000 0002 1 27
d0211 000002 0001 0000 0003 28 52
d0211 000002 0001 0000 0002 53 59

...全文
120 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
javatemptation 2011-04-15
  • 打赏
  • 举报
回复

select kh as ykkh,yi,er,sa,si,MIN(kc) as [min],MAX(kc) as [max]
from
(
select *,1 as [sortnum]
from #a
where kc between 1 and 27
union
select *,2 as [sortnum]
from #a
where kc between 28 and 52
union
select *,3 as [sortnum]
from #a
where kc between 53 and 59
) as t
group by kh,yi,er,sa,si,[sortnum];
icemanpro 2011-04-15
  • 打赏
  • 举报
回复
查询结果要有三条记录才正确。
lsykaka0911 2011-04-15
  • 打赏
  • 举报
回复
用分组查询 试下 1-27、28-52、53-59为三组
icemanpro 2011-04-15
  • 打赏
  • 举报
回复
kc字段是从小到大,kc>=1 and kc<=27时,si =‘0002',当kc>=28 and kc<=52时,si='00003',当kc>=53 and kc<=59时,si='0002'
快溜 2011-04-15
  • 打赏
  • 举报
回复
create table #a(kh varchar(5),yi varchar(6),er varchar(4),sa varchar(4),si varchar(4),kc int)
insert into #a
select 'D0211','000002','0001', '0000', '0002', 1
union
select 'D0211', '000002', '0001', '0000', '0002', 7
union
select 'D0211', '000002', '0001', '0000', '0002',12
union
select 'D0211', '000002', '0001', '0000', '0002', 19
union
select 'D0211', '000002', '0001', '0000', '0002', 26
union
select 'D0211', '000002', '0001', '0000', '0002', 27
union
select 'D0211', '000002', '0001', '0000', '0003', 28
union
select 'D0211', '000002', '0001', '0000', '0003', 29
union
select 'D0211', '000002', '0001', '0000', '0003', 30
union
select 'D0211', '000002', '0001', '0000', '0003', 34
union
select 'D0211', '000002', '0001', '0000', '0003', 40
union
select 'D0211', '000002', '0001', '0000', '0003', 45
union
select 'D0211', '000002', '0001', '0000', '0003', 52
union
select 'D0211', '000002', '0001', '0000', '0002', 53
union
select 'D0211', '000002', '0001', '0000', '0002', 59

select kh ,yi ,er, sa, si,MIN(kc)[min],MAX(kc)[max] from #a group by kh ,yi ,er, sa, si

/*
kh yi er sa si min max
----- ------ ---- ---- ---- ----------- -----------
D0211 000002 0001 0000 0002 1 59
D0211 000002 0001 0000 0003 28 52
javatemptation 2011-04-15
  • 打赏
  • 举报
回复
把lz提供的数据小改了一下,出了结果


use tempdb;
/*
create table #a(kh varchar(5),yi varchar(6),er varchar(4),sa varchar(4),si varchar(4),kc int)
insert into #a
select 'D0211','000002','0001', '0000', '0002', 1
union
select 'D0211', '000002', '0001', '0000', '0002', 7
union
select 'D0211', '000002', '0001', '0000', '0002',12
union
select 'D0211', '000002', '0001', '0000', '0002', 19
union
select 'D0211', '000002', '0001', '0000', '0002', 26
union
select 'D0211', '000002', '0001', '0000', '0002', 27
union
select 'D0211', '000002', '0001', '0000', '0003', 28
union
select 'D0211', '000002', '0001', '0000', '0003', 29
union
select 'D0211', '000002', '0001', '0000', '0003', 30
union
select 'D0211', '000002', '0001', '0000', '0003', 34
union
select 'D0211', '000002', '0001', '0000', '0003', 40
union
select 'D0211', '000002', '0001', '0000', '0003', 45
union
select 'D0211', '000002', '0001', '0000', '0003', 52
union
select 'D0213', '000002', '0001', '0000', '0002', 53
union
select 'D0213', '000002', '0001', '0000', '0002', 59
*/
select kh as ykkh,yi,er,sa,si,MIN(kc) as [min],MAX(kc) as [max]
from #a
group by kh,yi,er,sa,si;
dawugui 2011-04-15
  • 打赏
  • 举报
回复
create table #a(kh varchar(5),yi varchar(6),er varchar(4),sa varchar(4),si varchar(4),kc int)
insert into #a
select 'D0211','000002','0001', '0000', '0002', 1
union
select 'D0211', '000002', '0001', '0000', '0002', 7
union
select 'D0211', '000002', '0001', '0000', '0002',12
union
select 'D0211', '000002', '0001', '0000', '0002', 19
union
select 'D0211', '000002', '0001', '0000', '0002', 26
union
select 'D0211', '000002', '0001', '0000', '0002', 27
union
select 'D0211', '000002', '0001', '0000', '0003', 28
union
select 'D0211', '000002', '0001', '0000', '0003', 29
union
select 'D0211', '000002', '0001', '0000', '0003', 30
union
select 'D0211', '000002', '0001', '0000', '0003', 34
union
select 'D0211', '000002', '0001', '0000', '0003', 40
union
select 'D0211', '000002', '0001', '0000', '0003', 45
union
select 'D0211', '000002', '0001', '0000', '0003', 52
union
select 'D0211', '000002', '0001', '0000', '0002', 53
union
select 'D0211', '000002', '0001', '0000', '0002', 59



select kh ykkh, yi, er, sa, si, min(kc) [min], max(kc) [max]
from #a
group by kh , yi, er, sa, si

/*
ykkh yi er sa si min max
----- ------ ---- ---- ---- ----------- -----------
D0211 000002 0001 0000 0002 1 59
D0211 000002 0001 0000 0003 28 52

(所影响的行数为 2 行)

*/

drop table #a
lanmengxjh 2011-04-15
  • 打赏
  • 举报
回复
什么规律啊?没看懂
javatemptation 2011-04-15
  • 打赏
  • 举报
回复
根据什么取出来的?
lz说明一下依据
icemanpro 2011-04-15
  • 打赏
  • 举报
回复
有没有人会???

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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