【转】 【SQL】行列转换
【SQL】行列转换
http://space.itpub.net/519536/viewspace-609167
一、列变行
1.创建测试表test,并初始化实验数据
sec@ora10g> create table test (name_id varchar2(10), name varchar2(10));
sec@ora10g> insert into test values ('01','Andy1');
sec@ora10g> insert into test values ('01','Andy2');
sec@ora10g> insert into test values ('01','Andy3');
sec@ora10g> insert into test values ('01','Andy4');
sec@ora10g> insert into test values ('02','Steven1');
sec@ora10g> insert into test values ('02','Steven2');
sec@ora10g> insert into test values ('02','Steven3');
sec@ora10g> insert into test values ('02','Steven4');
sec@ora10g> commit;
2.查看测试表数据
sec@ora10g> select * from test order by name_id;
NAME_ID NAME
---------- ----------------------------------------
01 Andy1
01 Andy4
01 Andy3
01 Andy2
02 Steven1
02 Steven4
02 Steven3
02 Steven2
8 rows selected.
3.我们按照name_id不同值将该表横向转换如下
SELECT t1.name_id,
SUBSTR (MAX (SYS_CONNECT_BY_PATH (t1.NAME, ';')), 2) NAME
from (SELECT a.name_id, a.NAME,
ROW_NUMBER () OVER (PARTITION BY a.name_id ORDER BY a.NAME) rn
from TEST a) t1
START WITH t1.rn = 1
CONNECT BY t1.name_id = PRIOR t1.name_id AND t1.rn - 1 = PRIOR t1.rn
GROUP BY t1.name_id;
NAME_ID &nbs
相关文档:
一﹕
触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完
整性约`束。
二﹕ SQL
Server为每个触发器都创建了两个专用表 ......
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> ......
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_convert]') and xtype in (N'FN', N'IF', N'TF'))&n ......
转自:http://hong9270503.blog.163.com/blog/static/127292320091611319516/
通过SQL*PLUS我们可以构建友好的输出,满足多样化用户需求。
本例通过简单示例,介绍通过sql*plus输出xls,html两种格式文件.
首先创建两个脚本:
1.main.sql
用以设置环境,调用具体功能脚本
2.功能脚本-ge ......