SQL查询结果列转行(转)
来源:互联网 发布:centos 6.5yum网络配置 编辑:程序博客网 时间:2024/05/24 03:09
数据库-行转列的语法
表: PerTab
字段:name, title, values
原内容:一月 产品A 120
二月 产品A 20
一月 产品B 230
二月 产品B 400
-----------------------------------------------
查询结果: 月份 产品A 产品B 数量(Values)
一月 120 230
二月 20 400
-----------------------------------------------
SQl语法:select name, sum(case title when '产品A' then values else 0 end ) as 产品A from PerTab group by name
备注: 其中中间的可以重复,得到所有的列
还可以用这样的SQL语句:
select p1.name,sum(p1.values) as 产品 A,sum(p2.values) as 产品B from pertab p1,pertab p2 where p1.name=p2.name and p1.ti
tle='产品A' and p2.title='产品B' group by name;
*****************************************************
可以自动生成的语句(摘录中国DOtNet)
declare @sql varchar(8000)
set @sql = 'select name'
select @sql = @sql + ',sum(case title when '''+title+''' then values end) ['+title+']'
from (select distinct title from PerTab) as a
select @sql = @sql+' from PerTabgroup by name'
exec(@sql)
******************************************************
历史数据
declare @sql varchar(8000)
set @sql = 'select dt,qcode'
select @sql = @sql + ',sum(case [pid] when '''+cast([pid] as nvarchar)+''' then [val] end) as [' + cast(pid AS nvarchar) + ']'
from (select distinct pid from T20060411_60min WHERE PID IN(1,2,3,7,8,9,15,20)) as a
select @sql = @sql+' from T20060411_60min group by dt,qcode'
print @sql
exec(@sql)
********************************************************************************************************
写出这个SQL语句!
create table student
(
stuNo int,
stuName varchar(20)
);
create table cg
(
stuNo int,
course varchar(20),
result int
);
alter table cg add constraint foreign key (stuNo) references student(stuNo);
insert into student values(1,'a');
insert into student values(2,'b');
insert into cg values(1,'english',50);
insert into cg values(1,'chinese',60);
insert into cg values(2,'english',57);
insert into cg values(2,'chinese',68);
/ lect * from student
stuNo stuName
1 aa
2 bb
/ lect * from cg
stuNo course result
1 Chinese 80
1 English 92
2 Chinese 75
2 English 86
//只是随便写的两个表,通过stuNo关联,上面那个表是主表,下面的是引用表
//大概意思就这样,
//要求显示效果如下:
stuNo stuName Englist Chinese total
1 aa 80 92 172
1 bb 75 86 161
星域锁定<sunnysin@126.com> 21:07:56
select s.stuno as stuNo, s.stuName as stuName,
c1.result as english, c2.result as chinese,
(c1.result+c2.result) as total from
cg c1 inner join cg c2 on c1.stuno=c2.stuno inner
join student s on c1.stuno=s.stuno where
c1.course='english' and c2.course='chinese';
==================================================================
select sum(decode(sj1,'A', 1,0)) "A",
sum(decode(sj1,'B', 1,0)) "B",
sum(decode(sj1,'C', 1,0)) "C",
sum(decode(sj1,'D', 1,0)) "D",
sum(decode(sj1,'E', 1,0)) "E",
from TABLE
- SQL查询结果列转行(转)
- Oracle 查询结果列转行
- sql server 查询结果集 列 转行 过程
- SQL 操作列转行查询
- SQL数据库查询实现行转列与列转行结果SQL语句
- SQL数据库查询实现行转列与列转行结果SQL语句
- SQL数据库查询实现行转列与列转行结果SQL语句
- SQL数据库查询实现行转列与列转行结果SQL语句
- Sql SerVer 查询行转列、列转行
- SQL数据库查询实现行转列与列转行结果SQL语句(适用于SqlServer数据库,oracle需要修改case when语句)
- SQL Server 中行转列 列转行
- sql列转行
- sql列转行
- 列转行SQL
- sql列转行
- sql列转行
- SQL 列转行
- SQL行转列 列转行
- VC 状态栏
- 研究tomcat和apache的整合成功例子
- 获得编程经验的三种方法
- 通往WinDbg的捷径(二)
- 如何进行用户访问数据的记录和收集
- SQL查询结果列转行(转)
- jsp的9个内建对象
- 集合转换成二维数组
- CSpreadSheet类学习,用于操作excel表格。
- 幸福很简单
- 架构设计分析:进程重要还是线程重要?
- 挥泪卸载Google Desktop
- Setting Up A PXE Install Server For Multiple Linux Distributions and WinPE On Debian Lenny
- vista使用小技巧-文件夹选项(Folder Options)