以上两个无关联的表,和下面的一张表导出三个类型的数据是放在同一张excel表中的。
表:
CREATE TABLE "TZ_DD"
( "SYNF" VARCHAR2(4) NOT NULL ENABLE, --年份
"FCORPCODE" VARCHAR2(10) NOT NULL ENABLE, --代码
--编号
"BH" VARCHAR2(8) NOT NULL ENABLE,
"DDDXMC" VARCHAR2(60),
--类型
"DD_TYPE" VARCHAR2(20) NOT NULL ENABLE,
"SL" NUMBER(10,0),
"BZ" VARCHAR2(50),
"FSTATUS" VARCHAR2(10),
CONSTRAINT "PK_DD" PRIMARY KEY ("SYNF", "FCORPCODE", "BH", "DD_TYPE")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ;
INSERT INTO "TZ_DD" VALUES ('2009', '030606', '1', 'A', '类型1, '18', null, '运行');
INSERT INTO "TZ_DD" VALUES ('2009', '030606', '2', 'B', '类型2', '77', null, '运行');
INSERT INTO "TZ_DD" VALUES ('2009', '030606', '3', 'C', '类型2', '1', null, '运行');
INSERT INTO "TZ_DD" VALUES ('2009', '030606', '4', 'D', '类型2', '193', null, '运行');
INSERT INTO "TZ_DD" VALUES ('2009', '030606', '5', 'E', '类型2', '77', null, '运行');
INSERT INTO "TZ_DD" VALUES ('2009', '030606', '6', 'F', '类型3', '1', null, '运行');
INSERT INTO "TZ_DD" VALUES ('2009', '030606', '7', 'G', '类型3', '193', null, '运行');
INSERT INTO "TZ_DD" VALUES ('2009', '030606', '8', 'H', '类型3', '77', null, '运行');
对于一张表的三个类型好办。
SELECT MAX(DECODE(DD_TYPE,'类型1‘,BH,'')) bh1
,MAX(decode(DD_TYPE,'类型1,DDDXMC,''))dddxmc1
,MAX(DECODE(DD_TYPE,'类型1’,FSTATUS,'')) fstatus1
,MAX(DECODE(DD_TYPE,'类型1',SL,'')) sl1
,MAX(DECODE(DD_TYPE,'类型1',BZ,'')) bz1
,MAX(DECODE(DD_TYPE,'类型2',BH,'')) bh2
,MAX(DECODE(DD_TYPE,'类型2',DDDXMC,'')) dddxmc2
,MAX(DECODE(DD_TYPE,'类型2',FSTATUS,'')) fstatus2
,MAX(DECODE(DD_TYPE,'类型2',SL,'')) sl2
,MAX(DECODE(DD_TYPE,'类型2',BZ,'')) bz2
,MAX(DECODE(DD_TYPE,'类型3',BH,'')) bh3
,MAX(DECODE(DD_TYPE,'类型3',DDDXMC,'')) dddxmc3
,MAX(DECODE(DD_TYPE,'类型3',FSTATUS,'')) fstatus3
,MAX(DECODE(DD_TYPE,'类型3',SL,'')) sl3
,MAX(DECODE(DD_TYPE,'类型3',BZ,'')) bz3
FROM (SELECT BH,DDDXMC,DD_TYPE,FSTATUS,SL,BZ
,ROW_NUMBER() OVER(PARTITION BY DD_TYPE ORDER BY BH) rn
FROM TZ_DD WHERE SYNF=‘2009’ AND FCORPCODE=‘090909’) t
GROUP BY rn
ORDER BY rn
显示为
BH DDDXMC DD_TYPE BH DDDXMC DD_TYPE BH DDDXMC DD_TYPE
1 A 类型1 2 B 类型2 6 F 类型3
3 C 类型2 7 G 类型3
4 D 类型2 8 H 类型3
5 E 类型2
[ 本帖最后由 leeyohn 于 2010-8-4 22:24 编辑 ] |