论坛上,关于记录横排的语句:
有一个表:
BH GZLB JE
----------------------
001 A 100
001 B 150
001 C 110
002 A 99
002 B 180
002 C 150
003 A 160
003 B 170
003 C 130
用SQL语句如何将上面的表变成下面横向的排列方式呢。
BH A B C
-------------------
001 100 150 110
002 99 180 150
003 160 170 130
(GZLB 里面的字段是动态的,不是只有A,B,C 可能还有A,B,C,D,E...)
使用的语句为:
declare @sql varchar(6000)
set @sql = 'select bh, '
select @sql = @sql +' sum(case GZLB when '''+ GZLB +''' then JE else null end) ['+ GZLB +'],' from (select distinct GZLB as GZLB from tblA) tmp
set @sql = substring(@sql,1,len(@sql)-1)+' from tblA group by BH'
exec(@sql) 哪位高手帮忙改成mysql的语句,谢谢。
有一个表:
BH GZLB JE
----------------------
001 A 100
001 B 150
001 C 110
002 A 99
002 B 180
002 C 150
003 A 160
003 B 170
003 C 130
用SQL语句如何将上面的表变成下面横向的排列方式呢。
BH A B C
-------------------
001 100 150 110
002 99 180 150
003 160 170 130
(GZLB 里面的字段是动态的,不是只有A,B,C 可能还有A,B,C,D,E...)
使用的语句为:
declare @sql varchar(6000)
set @sql = 'select bh, '
select @sql = @sql +' sum(case GZLB when '''+ GZLB +''' then JE else null end) ['+ GZLB +'],' from (select distinct GZLB as GZLB from tblA) tmp
set @sql = substring(@sql,1,len(@sql)-1)+' from tblA group by BH'
exec(@sql) 哪位高手帮忙改成mysql的语句,谢谢。
解决方案 »
- 为什么从MySQL数据库中读取的中文字段都是"????"呢?
- 这SQL语句。。。能用索引优化吗
- 表的存储引擎为myisam,如何去掉以前的自动commit功能,让程序员手动写程序commit呢?
- 急问关于触发器问题!!!!!!!!!(很急)
- 出现Using temporary; Using filesort应该怎么优化
- mysql存储过程中如何实现程序的跳转啊?
- My SQL里面一个insert 语句的问题
- 高手来看看。想了三天没搞定的查询语句
- windows命令行下,无法用mysql databasename < xxxx.sql 创建表,希望高手指点以下我这个初学者,谢谢了
- 一个update问题
- mysql如何导出数据到sql server 2005
- 在windows环境下,怎样实现mysql数据库的增量备份?
drop TEMPORARY TABLE IF EXISTS qqtt;
CREATE TEMPORARY TABLE qqtt as
select @i:=@i+1 as newi,
@ee:=concat(@ee,'sum(case when GZLB=''',GZLB,''' then je else 0 end) as ',gzlb,',') as newjl
from
( select distinct GZLB as GZLB from ttmh) a order by newi desc limit 1;
select newjl from qqtt into @z2;
set @z2=concat('select bh,',left(@z2,length(@z2)-1),' from ttmh group by BH' );
select @z2;
PREPARE stmt2 FROM @z2;
EXECUTE stmt2
DELIMITER $$
drop PROCEDURE if exists `zz`.`tryq` $$
CREATE PROCEDURE `zz`.`tryq`()
BEGIN
declare z2 varchar(200);
declare aa int;
set @ee=' ';set @i=1;
select @i:=@i+1 as newi,
@ee:=concat(@ee,'sum(case when GZLB=''',GZLB,''' then je else 0 end) as ',gzlb,',') as newjl
into aa,z2
from
( select distinct GZLB as GZLB from ttmh) a order by newi desc limit 1;
set @z2=concat('select bh,',left(z2,length(z2)-1),' from ttmh group by BH' );
select @z2;
PREPARE stmt2 FROM @z2;
EXECUTE stmt2 ; END$$DELIMITER ;
在你的MySQL所在的主机上定时执行一个脚本,比如下面这个命令。[code=BatchFile]mysql -u userid -ppasswd mydb -e 'insert into teacherCalendar(teacherId,date) select id,CURDATE() from teacher;'[/code]这样每天可以把所有教师在表teacherCalendar添加当日的记录,你可以在主机定在早上5点运行.Linux下见参见crontab命令, windows下则简单,直接看计划任务就行了