日期:2014-05-18  浏览次数:20455 次

基础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