返回列表 发帖

[数据库] 请教一条oracle sql查询的写法

以下表结构

  1. 表一:
  2.   CREATE TABLE "TZ_TX_QT"
  3.    ( "SYNF" VARCHAR2(4) NOT NULL ENABLE, --使用年份
  4. "FCORPCODE" VARCHAR2(10) NOT NULL ENABLE,   --代码
  5. "BH" VARCHAR2(8) NOT NULL ENABLE, --编号
  6. "CKMC" VARCHAR2(30),
  7. "CKSZD" VARCHAR2(20),
  8. "BZ" VARCHAR2(50),
  9. "FSTATUS" VARCHAR2(10),
  10.   CONSTRAINT "PK_TZ_TX_QT" PRIMARY KEY ("SYNF", "FCORPCODE", "BH")
  11.   USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  12.   STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  13.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  14.   TABLESPACE "USERS"  ENABLE
  15.    ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  16.   STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  17.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  18.   TABLESPACE "USERS"
  19. ;

  20. 表二:
  21. CREATE TABLE “TZ_TX_GLLC"
  22.    ( "SYNF" VARCHAR2(4) NOT NULL ENABLE, --使用年份
  23. "FCORPCODE" VARCHAR2(10) NOT NULL ENABLE, --代码
  24. "BH" VARCHAR2(8) NOT NULL ENABLE, --编号
  25. "GLLC" NUMBER(16,3),
  26. "GLLC_SJ" NUMBER(16,3),
  27. "BZ" VARCHAR2(50),
  28. "FSTATUS" VARCHAR2(10),
  29.   CONSTRAINT "PK_GLLC" PRIMARY KEY ("SYNF", "FCORPCODE", "BH")
  30.   USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  31.   STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  32.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  33.   TABLESPACE "USERS"  ENABLE
  34.    ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  35.   STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  36.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  37.   TABLESPACE "USERS"
  38. ;

  39. INSERT INTO "TZ_TX_QT" VALUES ('2008', '090909', '1', 'A', null, null, '运行');
  40. INSERT INTO "TZ_TX_QT" VALUES ('2008', '090909', '2', 'B', null, null, '运行');
  41. INSERT INTO "TZ_TX_QT" VALUES ('2008', '090909', '3', 'C', null, null, '运行');
  42. INSERT INTO "TZ_TX_QT" VALUES ('2008', '090909', '4', 'D', null, null, '运行');
  43. INSERT INTO "TZ_TX_QT" VALUES ('2008', '090909', '5', 'E', null, null, '运行');
  44. INSERT INTO "TZ_TX_QT" VALUES ('2008', '090909', '6', 'F', null, null, '运行');

  45. INSERT INTO "TZ_TX_GLLC" VALUES ('2008', '090909', '1', 10468, 6100, null, null, '运行');
复制代码

两表无任何关系,用sql查询怎么实现这样的形式
1.jpg
2010-8-4 16:34

提问赏金:10金币
获奖名单 : Fetch(10金币)    
万里独行多陌路,一诗好赏便知音。

以上两个无关联的表,和下面的一张表导出三个类型的数据是放在同一张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 编辑 ]
万里独行多陌路,一诗好赏便知音。

TOP

我这里的业务需要导出excel,有几张excel比较特殊,是毫无关联的table放在一张excel中。其中一excel存放二张table,并且还有几列是同一table中的三种类型(下面)。
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
万里独行多陌路,一诗好赏便知音。

TOP

原帖由 leeyohn 于 2010-8-4 22:27 发表
我这里的业务需要导出excel,有几张excel比较特殊,是毫无关联的table放在一张excel中。其中一excel存放二张table,并且还有几列是同一table中的三种类型(下面)。
BH     DDDXMC    DD_TYPE   BH     DDDXMC   DD_TYPE   BH  ...


是毫无关联的table放在一张excel中?
哦,一般不会这样吧。。我们平常在项目中,生成的excel文件中的数据,都是我们根据我们的业务取出我们需要的数据才会放到excel文件啊
倚楼听风雨,笑看江湖路。。。

TOP

原帖由 heyitang 于 2010-8-5 16:48 发表


是毫无关联的table放在一张excel中?
哦,一般不会这样吧。。我们平常在项目中,生成的excel文件中的数据,都是我们根据我们的业务取出我们需要的数据才会放到excel文件啊 ...

哦,应该说是表和表之间无关联的,但数据是在整个excel中是相关的
万里独行多陌路,一诗好赏便知音。

TOP

TOP

万里独行多陌路,一诗好赏便知音。

TOP

TOP

万里独行多陌路,一诗好赏便知音。

TOP

TOP

返回列表