首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

基础Sql 语句有关问题,大侠帮忙

2012-01-07 
基础Sql 语句问题,大侠帮忙怎样写语句解决下面两个问题?问题1:有表T1(IDs,NameID,KeyID1,KeyID2,KeyID3,Ke

基础Sql 语句问题,大侠帮忙
怎样写语句解决下面两个问题?
问题1:
有表     T1(IDs,NameID,KeyID1,KeyID2,KeyID3,KeyID4):
Ids     NameID       KeyID1                           KeyID2                 KeyID3                   KeyID4  
1         A                 101   102   104                 201   204               302                         401
2         B                 101   103                         201                       301   303                
3         C                 104   105                         203                       303                         402

要怎样写Sql语句才能达到这种效果?(即:统计每个选项的数量)
Key         Num
101         2
102         1
103         1
104         2
105         1
201         1
202         2
203         1
204         1
301         1
302         1
303         2
401         1
402         1

——————————————————————————————————
问题2:
表   T2(IDs,NumList):
IDs         NumList
1             100  
2             101    
3             200
4             150
5             120
6             102

能不能统计出T2中NumList字段不连续的数字区间?
得如下结果:
不连续区间             差数
102-120                 18  
120-150                 30  
150-200                 50




[解决办法]
KeyID1
101 102 104
最多个数确定吗?,是不是都是三位?
[解决办法]
问题2 :

select a.IDs || ' - ' || b.IDs as "不连续区间 ",a.Numberlist - b.Numberlist as "差额 "
from T2 a left join T2 b on a.IDs> b.IDs
where b.IDs = (select max(IDs) from student where IDs <a.IDs) and (a.Numberlist - b.Numberlist <> 1)

[解决办法]
问题2:
create table T2(IDs int, NumList int)
go
insert t2 select 1, 100
union all select 2, 101
union all select 3, 200
union all select 4, 150


union all select 5, 120
union all select 6, 102

go
select area = ltrim(SecNum)+ ' '+ltrim(NumList),sub=NumList-SecNum
from (select NumList, SecNum=(select max(NumList) from T2 as tb1 where tb1.NumList <tb.NumList) from T2 as tb) as T
where NumList-SecNum> 1
order by area

drop table T2

热点排行