我同意楼上的说法, 比如创建临时表KM 在用insert into 将需要的数据插入进去, 执行完毕后再删除
to hellowbh(程序员),这样恐怕不行把,数学,语文,英语是那个表里记录的值呀。 to gmc007(江西的佬表) 这样我决的到可以,不过我找不到stringgrid 呀,在那块了。 还有怎样把各科对应的成绩列出来,似乎库结构应该是,姓名,数学。语文。 成绩不做字段。 但这样不符合数据库规则呀,而且浪费空间呀。
先用Query 查询。 select *,数学+语文+英语 as 总成绩 from (SELECT 姓名, SUM(CASE 科目 WHEN '数学' THEN 成绩 ELSE 0 END) AS 数学, SUM(CASE 科目 WHEN '语文' THEN 成绩 ELSE 0 END) AS 语文, SUM(CASE 科目 WHEN '英语' THEN 成绩 ELSE 0 END) AS 英语 FROM 科目成绩表 GROUP BY 姓名 ) as aaa查询结果 姓名 数学 语文 英语 总成绩 aaa 10 0 20 30
修改一下,不应该 sum. select *,数学+语文+英语 as 总成绩 from (SELECT 姓名, (CASE 科目 WHEN '数学' THEN 成绩 ELSE 0 END) AS 数学, (CASE 科目 WHEN '语文' THEN 成绩 ELSE 0 END) AS 语文, (CASE 科目 WHEN '英语' THEN 成绩 ELSE 0 END) AS 英语 FROM 科目成绩表 ) as aaa order by 姓名
不能连续回复3次,害得我换了个名称abc123456进来修改了一下。 这个规矩太讨厌了。
谢了。 to hellowbh 你的方法挺特别, 我的试试, 现在有三种方法:用stringgrid,用临时表,用hellowbh的方法,等‘ 我弄出那种方法好,一定告诉大家了,
用STRINGGRID代替DBGRID,为它定好姓名,,语文,英语4列,
然后,
while not eof do
begin
if trim(fieldbyname('科目'))='数学' then
...(insert data to stringgrid)
...
end;
把想要显示的数据根据格式插入,再显示出来
比如:你可以创建临时表#km(code,shuxue,yingyu,chengji)
比如创建临时表KM
在用insert into 将需要的数据插入进去,
执行完毕后再删除
to gmc007(江西的佬表)
这样我决的到可以,不过我找不到stringgrid 呀,在那块了。
还有怎样把各科对应的成绩列出来,似乎库结构应该是,姓名,数学。语文。
成绩不做字段。
但这样不符合数据库规则呀,而且浪费空间呀。
stringgrid不会找不到吧,小妹~~~,吓我呀
from
(SELECT 姓名,
SUM(CASE 科目 WHEN '数学' THEN 成绩 ELSE 0 END) AS 数学,
SUM(CASE 科目 WHEN '语文' THEN 成绩 ELSE 0 END) AS 语文,
SUM(CASE 科目 WHEN '英语' THEN 成绩 ELSE 0 END) AS 英语
FROM 科目成绩表
GROUP BY 姓名
) as aaa查询结果
姓名 数学 语文 英语 总成绩
aaa 10 0 20 30
select *,数学+语文+英语 as 总成绩
from
(SELECT 姓名,
(CASE 科目 WHEN '数学' THEN 成绩 ELSE 0 END) AS 数学,
(CASE 科目 WHEN '语文' THEN 成绩 ELSE 0 END) AS 语文,
(CASE 科目 WHEN '英语' THEN 成绩 ELSE 0 END) AS 英语
FROM 科目成绩表
) as aaa
order by 姓名
这个规矩太讨厌了。
to hellowbh 你的方法挺特别,
我的试试,
现在有三种方法:用stringgrid,用临时表,用hellowbh的方法,等‘
我弄出那种方法好,一定告诉大家了,
好象也不行吧,要是科目有两颗,那样可行吗?