表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
...谢谢!
解决方案 »
- 请问怎样写着个条件
- 请教:MYSQL插入数据报错
- MySQL插入数据库的瞬间时区改变
- 请教大家个问题,谢谢各位
- 怎样得到一个数据库中的所有表的表结构?--分可以加的.----
- 数据查询问题
- linux 上新安装了lamp 测试php apache mysql 都正常。但是我安装了dedecms 也能安装成功。但是安装完就打不开网站了。500错误
- Message : Duplicate entry 'dfwztj' for key 'PRIMARY' 帮我看看这个怎么解决
- 设置主从服务器为什么出错啊?求解!
- 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) 方法 转换就可以