表a结构为
字段1 | 字段2
------------------
A01 001
A01 002
A01 003
A01 009
B01 001
B01 002
B01 089
...现请教用SQL达到以下数据要求:
字段1 | 字段2 | 字段3 | 字段4 | 字段5 | 字段6
A01 001 002 003 009
B01 001 002 089
...谢谢!
字段1 | 字段2
------------------
A01 001
A01 002
A01 003
A01 009
B01 001
B01 002
B01 089
...现请教用SQL达到以下数据要求:
字段1 | 字段2 | 字段3 | 字段4 | 字段5 | 字段6
A01 001 002 003 009
B01 001 002 089
...谢谢!
解决方案 »
- IN (...) ORDER BY rand() LIMIT 1 - 如何控制概率
- 关于MySQL中模糊查询语句的写法?
- 同ip 和同设备只算一条记录。。求有多少条记录?sql语句写出来。
- 一个表内的某个字段是vachar型,内容可能是gb2312,也可能是big5,怎么办才能避免乱码?
- SQL(mysql)求助
- Can't connect to MySQL server on 'localhost' (10048)
- mysql安全问题
- Mysql安装问题
- 在哪找到mysql jdbc驱动
- ASP对MYSQL数据库操作!
- 用where hits>100 order by id的时候第一次运行速度特别慢,60万数据,高压力
- mysql备份与恢复
sql语句的select部分要生成。
如果楼主强行写成一句sql,估计会很麻烦。最终的sql类似如下:select 字段1,max(case when 字段2='001' then 字段2 end ) as 字段2,max(case when 字段2='002' then 字段2 end ) as 字段3,max(case when 字段2='003' then 字段2 end ) as 字段3,..........
from a
where 1;
相信到此,楼主应该已经会了吧。
以下是MS SQL的语句,如何转为MySQL4.0? 研究中...
假设有张学生成绩表(t)如下
Name Subject Result
张三 语文 73
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成
姓名 语文 数学 物理
张三 73 83 93
李四 74 84 94
create table #t
(
Name varchar(10) ,
Subject varchar(10) ,
Result int
)
insert into #t(Name , Subject , Result) values('张三','语文','73')
insert into #t(Name , Subject , Result) values('张三','数学','83')
insert into #t(Name , Subject , Result) values('张三','物理','93')
insert into #t(Name , Subject , Result) values('李四','语文','74')
insert into #t(Name , Subject , Result) values('李四','数学','83')
insert into #t(Name , Subject , Result) values('李四','物理','93')
declare @sql varchar(8000)
set @sql = 'select Name as ' + '姓名'
select @sql = @sql + ' , sum(case Subject when ''' + Subject + ''' then Result end) [' + Subject + ']'
from (select distinct Subject from #t) as a
set @sql = @sql + ' from #t group by name'
exec(@sql)
drop table #t
--结果
姓名 数学 物理 语文
---------- ----------- ----------- -----------
李四 83 93 74
张三 83 93 73
from a
where 1;
把前面的sql中max去掉就可以了
select 字段1,max(case when 字段2='001' then 字段2 end ) as 字段2,max(case when 字段2='002' then 字段2 end ) as 字段3,max(case when 字段2='003' then 字段2 end ) as 字段3,..........
from a
where 1 group by 字段1;
from t
where 1 group by Name
实际使用时,要注意转换标点符号。('语文' 两面的单引号可能不对)
本sql没有经过调试。
然后用 whalefish2001(whale) 方法 转换就可以