以下问题,一人全部对,分数只给一人,没有全对的按先后顺序给分
已有成绩表如下图,看不到请刷新:
http://p.blog.csdn.net/images/p_blog_csdn_net/thinclient/420223/o_%e6%9c%aa%e5%91%bd%e5%90%8d.bmp
定义:
名次以1开始,两人总分相同,名次应相同,如下所示:
名次 分数
1 333
2 222
2 222
4 111
总分1=语文+数学
总分2=语文+数学+政治
总名次1:所有考生的排名:按总分1排序
校名次1:以“单位”分组的内部名次:按总分1排序
总名次2:所有考生的排名:按总分2排序
校名次2:以“单位”分组的内部名次:按总分2排序
总分和总名次和校名次原表中没有,须在查询中生成任务一:从成绩表查询出下表
总名次1,校名次1,总名次2,校名次2,考场,考号,单位,姓名,性别,语文,数学,物理,化学,外语,政治
.
.
.
任务二:从成绩表查询出下表:(0分者不计为分母)
单位,语文平均,数学平均,物理平均,化学平均,外语平均,政治平均
单位1
单位2
.
.
.
全部单位
任务三:从成绩表查询出下表:(>=60为及格)
单位,语文及格率,数学及格率,物理及格率,化学及格率,外语及格率,政治及格率
单位1
单位2
.
.
.
全部单位
已有成绩表如下图,看不到请刷新:
http://p.blog.csdn.net/images/p_blog_csdn_net/thinclient/420223/o_%e6%9c%aa%e5%91%bd%e5%90%8d.bmp
定义:
名次以1开始,两人总分相同,名次应相同,如下所示:
名次 分数
1 333
2 222
2 222
4 111
总分1=语文+数学
总分2=语文+数学+政治
总名次1:所有考生的排名:按总分1排序
校名次1:以“单位”分组的内部名次:按总分1排序
总名次2:所有考生的排名:按总分2排序
校名次2:以“单位”分组的内部名次:按总分2排序
总分和总名次和校名次原表中没有,须在查询中生成任务一:从成绩表查询出下表
总名次1,校名次1,总名次2,校名次2,考场,考号,单位,姓名,性别,语文,数学,物理,化学,外语,政治
.
.
.
任务二:从成绩表查询出下表:(0分者不计为分母)
单位,语文平均,数学平均,物理平均,化学平均,外语平均,政治平均
单位1
单位2
.
.
.
全部单位
任务三:从成绩表查询出下表:(>=60为及格)
单位,语文及格率,数学及格率,物理及格率,化学及格率,外语及格率,政治及格率
单位1
单位2
.
.
.
全部单位
只是数据太多,难得输入,
思路:
主要使用ROW_NUMBER, DENSE_RANK, PARTITION BY ,ORDER BY SUM这几个而已,
任务四:从成绩表查询出下表
定义:[段700]是总分1大于等于700的该校学生人数,[段600]是总分1大于等于600且小于700的该校学生人数……,[段0]是总分1大于0且小于300的该校学生人数,[全部单位]含所有学校的学生人数.
对列要求使用动态sql,因为实际中分段是10分一段的。
单位 段700 段600 段500 段400 段300 段0
单位1
单位2
.
.
.
全部单位
drop table score;--Test dataCreate table score(
考号 char(6),
考场 char(2),
单位 varchar(20),
总名次 integer,
校名次 integer,
姓名 varchar(10),
性别 varchar(2),
语文 numeric(5,1),
数学 numeric(5,1),
物理 numeric(5,1),
化学 numeric(5,1),
外语 numeric(5,1),
政治 numeric(5,1)
);
goInsert into score values('040001', '1', 'shihe', 964, 219, 'dong', '女', 43.0, 13.0, 1.0, 2.0, 1.0, 1.0);
Insert into score values('040002', '1', 'hailin', 964, 219, 'zhao', '男', 3.0, 23.0, 91.0, 2.0, 1.0, 1.0);
Insert into score values('040003', '1', 'shihe', 964, 219, 'qian', '女', 23.0, 33.0, 1.0, 2.0, 1.0, 11.0);
Insert into score values('040004', '1', 'xinhe', 964, 219, 'sun', '男', 63.0, 43.0, 1.0, 2.0, 51.0, 1.0);
Insert into score values('040005', '1', 'shihe', 964, 219, 'li', '女', 93.0, 53.0, 1.0, 62.0, 1.0, 1.0);
Insert into score values('040006', '1', 'hailin', 964, 219, 'zhou', '女', 13.0, 63.0, 81.0, 2.0, 1.0, 1.0);
Insert into score values('040007', '1', 'shihe', 964, 219, 'wu', '女', 3.0, 73.0, 1.0, 62.0, 31.0, 21.0);-- End of test data-- Task 1select rank() over (order by 语文+数学) as 总名次1,
rank() over (partition by 单位 order by 语文+数学) as 校名次1,
rank() over (order by 语文+数学+政治) as 总名次2,
rank() over (partition by 单位 order by 语文+数学+政治 ) 校名次2,
考场,考号,单位,姓名,性别,语文,数学,物理,化学,外语,政治
from score ts;-- Task 2select 单位,
avg(语文) as 语文平均,
avg(数学) as 数学平均,
avg(物理) as 物理平均,
avg(化学) as 化学平均,
avg(外语) as 外语平均,
avg(政治) as 政治平均
from score
group by 单位;-- task 3
select 单位,
cast( sum( case when 语文>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 语文及格率,
cast( sum( case when 数学>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 数学及格率,
cast( sum( case when 物理>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 物理及格率,
cast( sum( case when 化学>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 化学及格率,
cast( sum( case when 外语>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 外语及格率,
cast( sum( case when 政治>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 政治及格率
from score
group by 单位;
drop table score;--Test dataCreate table score(
考号 char(6),
考场 char(2),
单位 varchar(20),
总名次 integer,
校名次 integer,
姓名 varchar(10),
性别 varchar(2),
语文 numeric(5,1),
数学 numeric(5,1),
物理 numeric(5,1),
化学 numeric(5,1),
外语 numeric(5,1),
政治 numeric(5,1)
);
goInsert into score values('040001', '1', 'shihe', 964, 219, 'dong', '女', 43.0, 13.0, 1.0, 2.0, 1.0, 1.0);
Insert into score values('040002', '1', 'hailin', 964, 219, 'zhao', '男', 3.0, 23.0, 91.0, 2.0, 1.0, 1.0);
Insert into score values('040003', '1', 'shihe', 964, 219, 'qian', '女', 23.0, 33.0, 1.0, 2.0, 1.0, 11.0);
Insert into score values('040004', '1', 'xinhe', 964, 219, 'sun', '男', 63.0, 43.0, 1.0, 2.0, 51.0, 1.0);
Insert into score values('040005', '1', 'shihe', 964, 219, 'li', '女', 93.0, 53.0, 1.0, 62.0, 1.0, 1.0);
Insert into score values('040006', '1', 'hailin', 964, 219, 'zhou', '女', 13.0, 63.0, 81.0, 2.0, 1.0, 1.0);
Insert into score values('040007', '1', 'shihe', 964, 219, 'wu', '女', 3.0, 73.0, 1.0, 62.0, 31.0, 21.0);-- End of test data-- Task 1select rank() over (order by 语文+数学) as 总名次1,
rank() over (partition by 单位 order by 语文+数学) as 校名次1,
rank() over (order by 语文+数学+政治) as 总名次2,
rank() over (partition by 单位 order by 语文+数学+政治 ) 校名次2,
考场,考号,单位,姓名,性别,语文,数学,物理,化学,外语,政治
from score ts;-- Task 2select 单位,
avg(语文) as 语文平均,
avg(数学) as 数学平均,
avg(物理) as 物理平均,
avg(化学) as 化学平均,
avg(外语) as 外语平均,
avg(政治) as 政治平均
from score
group by 单位;-- task 3
select 单位,
cast( sum( case when 语文>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 语文及格率,
cast( sum( case when 数学>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 数学及格率,
cast( sum( case when 物理>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 物理及格率,
cast( sum( case when 化学>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 化学及格率,
cast( sum( case when 外语>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 外语及格率,
cast( sum( case when 政治>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 政治及格率
from score
group by 单位;-- Task 4declare @execsql nvarchar(4000), @maxscore int, @interval float, @kk int, @mk intset @interval = 100 --设置间隔
set @maxscore = 700 --分数最高档
set @kk = cast(@maxscore/@interval as int)select @execsql = N'select 单位'
set @execsql = @execsql + N', sum( case when 语文+数学>' +
cast(@maxscore as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxscore as varchar)while(@kk>0)
begin
set @maxscore = @maxscore - @interval
set @execsql = @execsql + N', sum( case when 语文+数学 between ' +
cast(@maxscore as varchar) + ' and ' +
cast(@maxscore+@interval as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxscore as varchar)
set @kk=@kk-1
end
set @execsql = @execsql + N' from score group by 单位'exec(@execsql)
-- Task 4declare @execsql nvarchar(4000), @maxscore int, @interval float, @kk int, @mk intset @interval = 100 --设置间隔
set @maxscore = 700 --分数最高档
set @kk = cast(@maxscore/@interval as int)select @execsql = N'select 单位'
set @execsql = @execsql + N', sum( case when 语文+数学>=' +
cast(@maxscore as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxscore as varchar)while(@kk>0)
begin
set @maxscore = @maxscore - @interval
set @execsql = @execsql + N', sum( case when 语文+数学>=' +
cast(@maxscore as varchar) + N' and 语文+数学< ' +
cast(@maxscore+@interval as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxscore as varchar)
set @kk=@kk-1
end
set @execsql = @execsql + N' from score group by 单位'exec(@execsql)
drop table score;--Test dataCreate table score(
考号 char(6),
考场 char(2),
单位 varchar(20),
总名次 integer,
校名次 integer,
姓名 varchar(10),
性别 varchar(2),
语文 numeric(5,1),
数学 numeric(5,1),
物理 numeric(5,1),
化学 numeric(5,1),
外语 numeric(5,1),
政治 numeric(5,1)
);
goInsert into score values('040001', '1', 'shihe', 964, 219, 'dong', '女', 43.0, 13.0, 1.0, 2.0, 1.0, 1.0);
Insert into score values('040002', '1', 'hailin', 964, 219, 'zhao', '男', 3.0, 23.0, 91.0, 2.0, 1.0, 1.0);
Insert into score values('040003', '1', 'shihe', 964, 219, 'qian', '女', 23.0, 33.0, 1.0, 2.0, 1.0, 11.0);
Insert into score values('040004', '1', 'xinhe', 964, 219, 'sun', '男', 63.0, 43.0, 1.0, 2.0, 51.0, 1.0);
Insert into score values('040005', '1', 'shihe', 964, 219, 'li', '女', 93.0, 53.0, 1.0, 62.0, 1.0, 1.0);
Insert into score values('040006', '1', 'hailin', 964, 219, 'zhou', '女', 13.0, 63.0, 81.0, 2.0, 1.0, 1.0);
Insert into score values('040007', '1', 'shihe', 964, 219, 'wu', '女', 3.0, 73.0, 1.0, 62.0, 31.0, 21.0);-- End of test data-- Task 1select rank() over (order by 语文+数学) as 总名次1,
rank() over (partition by 单位 order by 语文+数学) as 校名次1,
rank() over (order by 语文+数学+政治) as 总名次2,
rank() over (partition by 单位 order by 语文+数学+政治 ) 校名次2,
考场,考号,单位,姓名,性别,语文,数学,物理,化学,外语,政治
from score ts;-- Task 2select 单位,
avg(语文) as 语文平均,
avg(数学) as 数学平均,
avg(物理) as 物理平均,
avg(化学) as 化学平均,
avg(外语) as 外语平均,
avg(政治) as 政治平均
from score
group by 单位;-- task 3
select 单位,
cast( sum( case when 语文>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 语文及格率,
cast( sum( case when 数学>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 数学及格率,
cast( sum( case when 物理>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 物理及格率,
cast( sum( case when 化学>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 化学及格率,
cast( sum( case when 外语>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 外语及格率,
cast( sum( case when 政治>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 政治及格率
from score
group by 单位;-- Task 4declare @execsql nvarchar(4000), @maxscore int, @interval float, @kk int, @minscore intset @interval = 100 --设置间隔
set @maxscore = 700 --分数最高档
set @minscore = 300 --分数最低档select @execsql = N'select 单位'
set @execsql = @execsql + N', sum( case when 语文+数学>=' +
cast(@maxscore as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxscore as varchar)while(@maxscore>@minscore)
begin
set @maxscore = @maxscore - @interval
set @execsql = @execsql + N', sum( case when 语文+数学>=' +
cast(@maxscore as varchar) + N' and 语文+数学< ' +
cast(@maxscore+@interval as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxscore as varchar)
endset @execsql = @execsql + N', sum( case when 语文+数学<' +
cast(@minscore as varchar) + N' and 语文+数学>0 ' +
N' then 1 else 0 end) as 段0'set @execsql = @execsql + N' from score group by 单位'exec(@execsql)
另外如果您有兴趣,请看一下这个帖子,一直没人回答:
http://topic.csdn.net/u/20080630/09/46526a1b-639c-4e82-b5b1-e4dc5809a496.html
-- Task 4declare @execsql nvarchar(4000), @maxscore int, @interval float, @kk int, @minscore intset @interval = 100 --设置间隔
set @maxscore = 700 --分数最高档
set @minscore = 300 --分数最低档select @execsql = N'select 单位'
set @execsql = @execsql + N', sum( case when 语文+数学>=' +
cast(@maxscore as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxscore as varchar)while(@maxscore>@minscore)
begin
set @maxscore = @maxscore - @interval
set @execsql = @execsql + N', sum( case when 语文+数学>=' +
cast(@maxscore as varchar) + N' and 语文+数学< ' +
cast(@maxscore+@interval as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxscore as varchar)
endset @execsql = @execsql + N', sum( case when 语文+数学<' +
cast(@minscore as varchar) + N' and 语文+数学>0 ' +
N' then 1 else 0 end) as 段0'set @execsql = @execsql + N' from score group by 单位 with rollup'exec(@execsql)
-- Task 4declare @execsql nvarchar(4000), @maxscore int, @interval float, @kk int, @minscore intset @interval = 100 --设置间隔
set @maxscore = 700 --分数最高档
set @minscore = 300 --分数最低档select @execsql = N'select (case grouping(单位) when 0 then 单位 else N''全部'' end) as 单位'
set @execsql = @execsql + N', sum( case when 语文+数学>=' +
cast(@maxscore as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxscore as varchar)while(@maxscore>@minscore)
begin
set @maxscore = @maxscore - @interval
set @execsql = @execsql + N', sum( case when 语文+数学>=' +
cast(@maxscore as varchar) + N' and 语文+数学< ' +
cast(@maxscore+@interval as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxscore as varchar)
endset @execsql = @execsql + N', sum( case when 语文+数学<' +
cast(@minscore as varchar) + N' and 语文+数学>0 ' +
N' then 1 else 0 end) as 段0'set @execsql = @execsql + N' from score group by 单位 with rollup'exec(@execsql)
那是因为我在这个例子里给的分数都属于段0!!
试试
drop table score;--Test dataCreate table score(
考号 char(6),
考场 char(2),
单位 varchar(20),
总名次 integer,
校名次 integer,
姓名 varchar(10),
性别 varchar(2),
语文 numeric(5,1),
数学 numeric(5,1),
物理 numeric(5,1),
化学 numeric(5,1),
外语 numeric(5,1),
政治 numeric(5,1)
);
goInsert into score values('040001', '1', 'shihe', 964, 219, 'dong', '女', 143.0, 113.0, 101.0, 102.0, 101.0, 101.0);
Insert into score values('040002', '1', 'hailin', 964, 219, 'zhao', '男', 203.0, 223.0, 291.0, 202.0, 101.0, 101.0);
Insert into score values('040003', '1', 'shihe', 964, 219, 'qian', '女', 123.0, 133.0, 101.0, 102.0, 101.0, 111.0);
Insert into score values('040004', '1', 'xinhe', 964, 219, 'sun', '男', 563.0, 43.0, 1.0, 2.0, 51.0, 1.0);
Insert into score values('040005', '1', 'shihe', 964, 219, 'li', '女', 393.0, 253.0, 1.0, 62.0, 1.0, 1.0);
Insert into score values('040006', '1', 'hailin', 964, 219, 'zhou', '女', 13.0, 63.0, 81.0, 2.0, 1.0, 1.0);
Insert into score values('040007', '1', 'shihe', 964, 219, 'wu', '女', 3.0, 73.0, 1.0, 62.0, 31.0, 21.0);-- End of test data-- Task 1select rank() over (order by 语文+数学) as 总名次1,
rank() over (partition by 单位 order by 语文+数学) as 校名次1,
rank() over (order by 语文+数学+政治) as 总名次2,
rank() over (partition by 单位 order by 语文+数学+政治 ) 校名次2,
考场,考号,单位,姓名,性别,语文,数学,物理,化学,外语,政治
from score ts;-- Task 2select 单位,
avg(语文) as 语文平均,
avg(数学) as 数学平均,
avg(物理) as 物理平均,
avg(化学) as 化学平均,
avg(外语) as 外语平均,
avg(政治) as 政治平均
from score
group by 单位;-- task 3
select 单位,
cast( sum( case when 语文>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 语文及格率,
cast( sum( case when 数学>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 数学及格率,
cast( sum( case when 物理>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 物理及格率,
cast( sum( case when 化学>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 化学及格率,
cast( sum( case when 外语>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 外语及格率,
cast( sum( case when 政治>=60.0 then 1 else 0 end ) as float)/ cast(count(*) as float) as 政治及格率
from score
group by 单位;-- Task 4declare @execsql nvarchar(4000), @maxscore int, @interval float, @kk int, @minscore intset @interval = 100 --设置间隔
set @maxscore = 700 --分数最高档
set @minscore = 300 --分数最低档select @execsql = N'select (case grouping(单位) when 0 then 单位 else N''全部'' end) as 单位'
set @execsql = @execsql + N', sum( case when 语文+数学>=' +
cast(@maxscore as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxscore as varchar)while(@maxscore>@minscore)
begin
set @maxscore = @maxscore - @interval
set @execsql = @execsql + N', sum( case when 语文+数学>=' +
cast(@maxscore as varchar) + N' and 语文+数学< ' +
cast(@maxscore+@interval as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxscore as varchar)
endset @execsql = @execsql + N', sum( case when 语文+数学<' +
cast(@minscore as varchar) + N' and 语文+数学>0 ' +
N' then 1 else 0 end) as 段0'set @execsql = @execsql + N' from score group by 单位 with rollup'exec(@execsql)
我早上运行时已把你的代码改下如下,没有带你的数据,是用的自己的真实中考成绩:(我只是把数据库名为zk,表名也为zk),所以应该还是有问题,你的这最后一帖不知道是不是修正了错误。
use zk
declare @execsql nvarchar(4000), @maxaaa int, @interval float, @kk int, @minaaa intset @interval = 10 --设置间隔
set @maxaaa = 700 --分数最高档
set @minaaa = 300 --分数最低档select @execsql = N'select 单位'
set @execsql = @execsql + N', sum( case when 语文+数学>=' +
cast(@maxaaa as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxaaa as varchar)while(@maxaaa>@minaaa)
begin
set @maxaaa = @maxaaa - @interval
set @execsql = @execsql + N', sum( case when 语文+数学>=' +
cast(@maxaaa as varchar) + N' and 语文+数学< ' +
cast(@maxaaa+@interval as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxaaa as varchar)
endset @execsql = @execsql + N', sum( case when 语文+数学<' +
cast(@minaaa as varchar) + N' and 语文+数学>0 ' +
N' then 1 else 0 end) as 段0'set @execsql = @execsql + N' from zk group by 单位'exec(@execsql)
use zk
declare @execsql nvarchar(4000), @maxaaa int, @interval float, @kk int, @minaaa intset @interval = 10 --设置间隔
set @maxaaa = 700 --分数最高档
set @minaaa = 300 --分数最低档select @execsql = N'select 单位'
set @execsql = @execsql + N', sum( case when 语文+数学+物理+化学+外语+政治+历史*0.2>=' +
cast(@maxaaa as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxaaa as varchar)while(@maxaaa>@minaaa)
begin
set @maxaaa = @maxaaa - @interval
set @execsql = @execsql + N', sum( case when 语文+数学+物理+化学+外语+政治+历史*0.2>=' +
cast(@maxaaa as varchar) + N' and 语文+数学+物理+化学+外语+政治+历史*0.2< ' +
cast(@maxaaa+@interval as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxaaa as varchar)
endset @execsql = @execsql + N', sum( case when 语文+数学+物理+化学+外语+政治+历史*0.2<' +
cast(@minaaa as varchar) + N' and 语文+数学+物理+化学+外语+政治+历史*0.2>0 ' +
N' then 1 else 0 end) as 段0'set @execsql = @execsql + N' from zk group by 单位'exec(@execsql)
我对你的代码改后的完整代码如下,请注意红色:
这段运行时出错:消息 102,级别 15,状态 1,第 1 行 '+' 附近有语法错误。
use zk
declare @execsql nvarchar(4000), @maxaaa int, @interval float, @kk int, @minaaa int set @interval = 10 --设置间隔
set @maxaaa = 700 --分数最高档
set @minaaa = 300 --分数最低档 select @execsql = N'select 单位'
set @execsql = @execsql + N', sum( case when 语文+数学+物理+化学+外语+政治+历史*0.2>=' +
cast(@maxaaa as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxaaa as varchar) while(@maxaaa>@minaaa)
begin
set @maxaaa = @maxaaa - @interval
set @execsql = @execsql + N', sum( case when 语文+数学+物理+化学+外语+政治+历史*0.2>=' +
cast(@maxaaa as varchar) + N' and 语文+数学+物理+化学+外语+政治+历史*0.2 < ' +
cast(@maxaaa+@interval as varchar) +
N' then 1 else 0 end) as 段' + cast(@maxaaa as varchar)
end set @execsql = @execsql + N', sum( case when 语文+数学+物理+化学+外语+政治+历史*0.2 <' +
cast(@minaaa as varchar) + N' and 语文+数学+物理+化学+外语+政治+历史*0.2>0 ' +
N' then 1 else 0 end) as 段0' set @execsql = @execsql + N' from zk group by 单位' exec(@execsql)
好像harry回的有道理:动态sql不支持这么长的,如果是这样的话,怎么办呢?
很不好意思,eru, 非常感谢您
本来对这几个sql还有些别的小要求
但是我的要求太多了
我得结帖,另帖发问了,望还能继续帮助我