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

自动生成有关问题

2012-03-17 
自动生成问题现有以下两个表表一年级班数起始班号初一210初二31表二年级科目初一语文初一数学初二语文初二

自动生成问题
现有以下两个表

表一
年级班数起始班号
初一210
初二31

表二
年级科目
初一语文
初一数学
初二语文
初二数学
初二英语

建立一个存储过程,需要时调用,生成下面的表
年级班科目
初一10语文
初一10数学
初一11语文
初一11数学
初二1语文
初二1数学
初二1英语
初二2语文
初二2数学
初二2英语


[解决办法]

SQL code
create table yxdxcy1(年级 char(6), 班数 int, 起始班号 int)insert into yxdxcy1select '初一', 2, 10 union allselect '初二', 3, 1create table yxdxcy2(年级 char(6), 科目 char(6))insert into yxdxcy2select '初一', '语文' union allselect '初一', '数学' union allselect '初二', '语文' union allselect '初二', '数学' union allselect '初二', '英语'-- 创建存储过程create proc spnameasbeginselect c.年级, c.number '班', d.科目from(select a.年级,b.numberfrom yxdxcy1 ainner join master.dbo.spt_values bon b.number between a.起始班号 and a.起始班号+a.班数-1where b.[type]='P') cinner join yxdxcy2 don c.年级=d.年级end-- 执行exec spname-- 结果年级     班           科目------ ----------- ------初一     10          语文  初一     10          数学  初一     11          语文  初一     11          数学  初二     1           语文  初二     1           数学  初二     1           英语  初二     2           语文  初二     2           数学  初二     2           英语  初二     3           语文  初二     3           数学  初二     3           英语  (13 row(s) affected)
[解决办法]
SQL code
declare @表一 table (年级 varchar(4),班数 int,起始班号 int)insert into @表一select '初一',2,10 union allselect '初二',3,1declare @表二 table (年级 varchar(4),科目 varchar(4))insert into @表二select '初一','语文' union allselect '初一','数学' union allselect '初二','语文' union allselect '初二','数学' union allselect '初二','英语'select aa.*,bb.科目 from (select a.年级,b.number from @表一 aleft join master..spt_values bon b.number between a.起始班号 and 起始班号+ 班数-1and b.type='p') aa left join @表二 bb on aa.年级=bb.年级/*年级   number      科目---- ----------- ----初一   10          语文初一   10          数学初一   11          语文初一   11          数学初二   1           语文初二   1           数学初二   1           英语初二   2           语文初二   2           数学初二   2           英语初二   3           语文初二   3           数学初二   3           英语*/ 

热点排行