高难度sql语法。进来看看(50)

  • 主题发起人 主题发起人 多多帮助
  • 开始时间 开始时间

多多帮助

Unregistered / Unconfirmed
GUEST, unregistred user!
有对应表1编号 姓名001 张三表2编号 选课001 语文001 数学001 化学....等等怎么求出这样的结果编号 选课 选课2 选课3 等等001 语文 数学 化学 ....
 
表2如果增加一个字段就好处理了,否则只能使用存储过程。假设增加字段,IndexNoSelect 表1.编号, Max(Case when IndexNo=1 then 选课 else null end) as 选课1, Max(Case when IndexNo=2 then 选课 else null end) as 选课2, Max(Case when IndexNo=3 then 选课 else null end) as 选课3from 表1,表2where 表1.编号=表2.编号group by 表1.编号-------------------------------access不支持case when ,但可以使用iif函数,Max( iif(IndexNo=1,选课,null) )
 
这个建视图就ok了吧
 
这个选课1,选课2.。。。等等是不限制的呀
 
视图怎么建?怎么调用?
 
那么学科是不是还有一个表其实很简单的,你用交叉表搜索,再加游标就可以解决了
 
学科没有表。是根据表2中录入的数据的
 
建议更改表结构和算法
 
select 编号,姓名,选课=(select 语文 from 表2 where 表1.编号=表2.编号),选课1=(select 数学 from 表2 where 表1.编号=表2.编号) from 表1 。。 。。。
 
用交叉表即可实现
 
需要编程处理还是可以做到
 
select TAB.编号, MAX(case when TAB.选课='语文' then TAB.选课 else null end) 选课1, MAX(case when TAB.选课='数学' then TAB.选课 else null end) 选课2, MAX(case when TAB.选课='化学' then TAB.选课 else null end) 选课3, ... ... from ( select 表1.编号,表2.选课 from 表1,表2 where 表1.编号=表2.编号 ) TABgroup by TAB.编号
 
条件不清晰,001 语文001 数学001 化学....等等有么有固定数量,最少究竟有多少科,不然没有答案
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
824
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部