给两次转置的结果集增加列头

表数据为:

CREATE TABLE IT_research (deptno number, ename varchar2(20));
INSERT INTO it_research VALUES (100, ‘HOPKINS‘);
INSERT INTO it_research VALUES (100,‘JONES‘);
INSERT INTO it_research VALUES (100,‘TONEY‘);
INSERT INTO it_research VALUES (200,‘MORALES‘);
INSERT INTO it_research VALUES (200,‘P.WHITAKER‘);
INSERT INTO it_research VALUES (200,‘MARCIANO‘);
INSERT INTO it_research VALUES (200,‘ROBINSON‘);
INSERT INTO it_research VALUES (300,‘LACY‘);
INSERT INTO it_research VALUES (300,‘WRIGHT‘);
INSERT INTO it_research VALUES (300,‘J.TAYLOR‘);

CREATE TABLE IT_apps (deptno number, ename varchar2(20));
INSERT INTO it_apps VALUES (400, ‘CORRALES‘);
INSERT INTO it_apps VALUES (400,‘MAYWEATHER‘);
INSERT INTO it_apps VALUES (400,‘CASTILLO‘);
INSERT INTO it_apps VALUES (400,‘MARQUEZ‘);
INSERT INTO it_apps VALUES (400,‘MOSLEY‘);
INSERT INTO it_apps VALUES (500,‘GATTI‘);
INSERT INTO it_apps VALUES (500,‘CALZAGHE‘);
INSERT INTO it_apps VALUES (600,‘LAMOTTA‘);
INSERT INTO it_apps VALUES (600,‘HAGLER‘);
INSERT INTO it_apps VALUES (600,‘HEARNS‘);
INSERT INTO it_apps VALUES (600,‘FRAZIER‘);
INSERT INTO it_apps VALUES (700,‘GUINN‘);
INSERT INTO it_apps VALUES (700,‘JUDAH‘);
INSERT INTO it_apps VALUES (700,‘MARGARITO‘);

要求显示为
RESEARCH             APPS
-------------------- --------
100                  400
 HOPKINS              CASTILLO
 JONES                CORRALES
 TONEY                MARQUEZ
200                   MAYWEATHER
 MARCIANO             MOSLEY
 MORALES             500
 P.WHITAKER           CALZAGHE
 ROBINSON             GATTI
300                  600
 J.TAYLOR             FRAZIER
 LACY                 HAGLER
 WRIGHT               HEARNS
                      LAMOTTA
                     700
                      GUINN
                      JUDAH
                      MARGARITO

结果

SELECT t1.ename, t2.ename
  FROM (SELECT nvl(ename, deptno) AS ename, rownum AS rn
          FROM (SELECT deptno, NULL AS ename
                  FROM it_research
                 GROUP BY deptno
                UNION ALL
                SELECT deptno, ename
                  FROM it_research
                 ORDER BY deptno, ename NULLS FIRST)) t1
  FULL JOIN (SELECT nvl(ename, deptno) AS ename, rownum AS rn
               FROM (SELECT deptno, NULL AS ename
                       FROM it_apps
                      GROUP BY deptno
                     UNION ALL
                     SELECT deptno, ename
                       FROM it_apps
                      ORDER BY deptno, ename NULLS FIRST)) t2
    ON t1.rn = t2.rn
    /
    
    ENAME		ENAME
--------------- ---------------
100		400
HOPKINS 	CASTILLO
JONES		CORRALES
TONEY		MARQUEZ
200		MAYWEATHER
MARCIANO	MOSLEY
MORALES 	500
P.WHITAKER	CALZAGHE
ROBINSON	GATTI
300		600
J.TAYLOR	FRAZIER
LACY		HAGLER
WRIGHT		HEARNS
		LAMOTTA
		700
		GUINN
		JUDAH
		MARGARITO

18 rows selected.
时间: 2024-10-03 03:56:27

给两次转置的结果集增加列头的相关文章

北京房租连续两月下降 租赁市场房源增加

北京房租连续两月下降 租赁市场房源增加 业内热评腾讯房产2014-10-19 07:38 我要分享 7 据新华社电北京统计局最新发布的数据显示,今年9月,北京市居民消费价格总水平同比上涨1.1%,其中9月租房租金环比下降0.2%,同比上涨0.3%,较8月环比下降0.1%的降幅继续扩大. 中原地产首席分析师张大伟分析认为,楼市降温使租赁市场房源增加,租赁供需矛盾相对缓和.住宅买卖成交惨淡,许多业主将房源转售为租或租售均可.以北京为例,买卖市场降温一定程度上使北京租赁房源明显上涨,房价的下调也使租金

设计四个线程,其中共两个线程每次对j增加1,另外两个线程每次对j减少1。循环100次,写出程序。

package cn.usst.DataTest6; /** * 设计四个线程,其中共两个线程每次对j增加1,另外两个线程每次对j减少1.循环100次,写出程序. * @ * */ public class DataTest6 { private int j; public static void main(String[] args) { DataTest6 dt = new DataTest6(); Inc inc = dt.new Inc(); Dec dec = dt.new Dec()

编写一个程序, 四个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1,要求使用内部类

/**  * @author laishengfeng  * @2014-8-27  * @TODO 编写一个程序,  四个线程,其中两个线程每次对j增加1,  * 另外两个线程对j每次减少1(要求使用内部类线程)  */ public class Test {   public static void main(String[] args) {   MyThread mt = new MyThread();  //MyThread对象   mt.new InnerThread1().start

mssql sqlserver 表增加列后,视图不会自动更新相关列的两种解决方法分享

摘要: 今天对物理数据表,进行增加列操作后,程序一直显示无法找到相应列,通过仔细比对发现,视图中无相应列更新,下文将具体的解决方法分享如下: 例: create view vw_test as select * from tableName go ---当我们在表tableName中新增列之,再次查询vw_test ---依然未发现相应列的存在. ----解决方法1:删除原视图,重新创建视图 drop view vw_test go create view vw_test as select *

C语言之基本算法42—矩阵转置及按行按列排序

//矩阵转置 按行按列排序 /* ================================================================== 题目:输入m*n矩阵,按行升序排列输出. 输入: 4 3 5 6 2 9 8 1 2 8 7 1 2 3 8 输出: 2 3 4 5 6 1 2 8 8 9 1 2 3 7 8 ================================================================== */ #includ

MySQL增加列,移动列

ALTER TABLE test ADD COLUMN id INT UNSIGNED NOT NULL auto_increment PRIMARY KEY FIRST 给表添加列是一个常用的操作,MySQL增加列的时候可以指定此列的位置 给指定位置加列需要两个关键字: FIRST和AFTER FIRST表示增加此列为第一个列 AFTER表示增加在某个列之后 注意MySQL增加列指定位置时没有BEFORE的用法,第一列可以使用FIRST,非第一列使用AFTER. 语法: ALTER TABLE

Oracle中对现有表增加列

alter   table   Tablename   add(column1   varchar2(20),column2   number(7,2)...) Oracle中修改列名不可以,但是可以删除列,增加列 alter   table   Tablename   drop   column   column1   alter   table   Tablename   add(column1   varchar2(20),column2   number(7,2)...)

c# datatable增加列并赋值

DataView dv = DataObj.GetBmfzr("03").Tables[0].DefaultView; dv.Sort = "bmbh"; DataTable dt = ds.Tables[0]; dt.Columns.Add("bkzz",typeof(string)); foreach (DataRow rs in dt.Rows) { string fzr = ""; DataRowView[] drv

SQL语句增加列、修改列类型、修改列、删除列

1.增加列: alter table tableName add columnName varchar(30) 2.修改列类型: alter table tableName alter column columnName varchar(4000) 3.修改列的名称: EXEC sp_rename 'tableName.column1' , 'column2' (把表名为tableName的column1列名修改为column2) 4.删除列: alter table tableName dro