数据库查询-行列转换的问题
2005-02-18 12:13
302 查看
现在数据库中有如下结构的表:
----------------------------------------------------------------
城市| 日期 |温度| --------------------------------------
长沙|2004-12-21| 23 | ---------------------------------------
湘潭|2004-12-21| 28 | ---------------------------------------
株洲|2004-12-21| 26 | ---------------------------------------
长沙|2004-12-22| 27 | ---------------------------------------
湘潭|2004-12-22| 25 | ---------------------------------------
株洲|2004-12-22| 22 | ---------------------------------------
查询结果显示为:
-----------------------------------------------------------------
日期 |长沙|湘潭|株洲|
-----------------------------------------------------------------
2004-12-21| 23 | 28 | 26 | ----------------------------------
2004-12-22| 27 | 25 | 22 | ----------------------------------
如果知道城市个数
select 日期,
[长沙]=max(case 城市 when '长沙' then 温度 else 0 end),
[湘潭]=max(case 城市 when '湘潭' then 温度 else 0 end),
[株洲]=max(case 城市 when '株洲' then 温度 else 0 end)
from 表
group by 日期
order by 日期
--如果不知道是几个城市, 就用下面第二个语句
delcare @s varchar(8000)
set @s='select 日期 '
select @s=@s+',['+城市+']=max(case 城市 when '''+城市+''' then 温度 else 0 end)'
from 表 group by 城市
set @s=@s+' from 表 group by 日期'
exec(@s)
其中使用max主要是为了使用group by
摘自csdn(lsxaa(小李铅笔刀)等帖子)
----------------------------------------------------------------
城市| 日期 |温度| --------------------------------------
长沙|2004-12-21| 23 | ---------------------------------------
湘潭|2004-12-21| 28 | ---------------------------------------
株洲|2004-12-21| 26 | ---------------------------------------
长沙|2004-12-22| 27 | ---------------------------------------
湘潭|2004-12-22| 25 | ---------------------------------------
株洲|2004-12-22| 22 | ---------------------------------------
查询结果显示为:
-----------------------------------------------------------------
日期 |长沙|湘潭|株洲|
-----------------------------------------------------------------
2004-12-21| 23 | 28 | 26 | ----------------------------------
2004-12-22| 27 | 25 | 22 | ----------------------------------
如果知道城市个数
select 日期,
[长沙]=max(case 城市 when '长沙' then 温度 else 0 end),
[湘潭]=max(case 城市 when '湘潭' then 温度 else 0 end),
[株洲]=max(case 城市 when '株洲' then 温度 else 0 end)
from 表
group by 日期
order by 日期
--如果不知道是几个城市, 就用下面第二个语句
delcare @s varchar(8000)
set @s='select 日期 '
select @s=@s+',['+城市+']=max(case 城市 when '''+城市+''' then 温度 else 0 end)'
from 表 group by 城市
set @s=@s+' from 表 group by 日期'
exec(@s)
其中使用max主要是为了使用group by
摘自csdn(lsxaa(小李铅笔刀)等帖子)
相关文章推荐
- 报一个比较难以描述的问题【关键字 报表 数据库行列转换 多表交叉查询】
- [数据库] SQL查询语句表行列转换及一行数据转换成两列
- 数据库的行列转换问题
- 数据库的行列转换问题
- sql查询 竖排变横排及横排变竖排显示 行列转换问题
- oralce数据库_【分页查询和行列转换】
- SQL C# nvarchar类型转换为int类型 多表查询的问题,查询结果到新表,TXT数据读取到控件和数据库,生成在控件中的数据如何存到TXT文件中
- 数据库行列转换(示例mySQL 5.1)
- oracle 一个有趣的行列转换问题
- 解决数据库查询时Null的问题(如SUM函数)
- 关于数据库一些行列转置的问题
- 关于一个数据库分页查询的问题
- 怎样解决thephile中的数据库由于排序造成的问题:对 text 数据类型不支持代码页转换。从: 1252 到: 936
- 关于数据库查询次数的问题
- SQL语句行列转换(附带数据库、表、视图操作)
- 解决数据库查询时Null的问题(如SUM函数)
- php查询数据库后在页面上显示中文乱码的问题
- 数据库查询问题(2012/8/20 金山面试)
- 数据库题——高于部门平均工资查询问题
- 基于java+play的相关数据库的查询和多表查询问题