看了一下用decode()可以达到你的要求

解决方案 »

  1.   

    回复人: bzszp(SongZip) ( ) 信誉:130 
    看了一下用decode()可以达到你的要求
    docode可以吗?他们的列都没有定阿
    不要和我开玩笑阿
      

  2.   

    实际应用中
    可以通过程序来实现根据t1的个数
    动态编写sql语句来实现
      

  3.   

    一个小例子,纵向表向横向表的转换
    SQL*PLus> desc emp;
     名称                                      是否为空? 类型
     ----------------------------------------- -------- -----------------------
     EMPNO                                              NUMBER(4)
     ENAME                                              VARCHAR2(10)
     JOB                                                VARCHAR2(9)
     MGR                                                NUMBER(4)
     HIREDATE                                           DATE
     SAL                                                NUMBER(7,2)
     COMM                                               NUMBER(7,2)
     DEPTNO                                             NUMBER(2)SQL*PLus> select job, deptno, count(*)
      2       from emp
      3       group by job, deptno;JOB           DEPTNO   COUNT(*)
    --------- ---------- ----------
    CLERK             10          2
    CLERK             20          4
    CLERK             30          2
    ANALYST           20          4
    MANAGER           10          2
    MANAGER           20          2
    MANAGER           30          2
    SALESMAN          30          8
    PRESIDENT         10          2已选择9行。SQL*PLus> select job,
      2          max( decode( deptno, 10, cnt, null ) ) dept_10,
      3          max( decode( deptno, 20, cnt, null ) ) dept_20,
      4          max( decode( deptno, 30, cnt, null ) ) dept_30,
      5          max( decode( deptno, 40, cnt, null ) ) dept_40
      6        from ( select job, deptno, count(*) cnt
      7               from emp
      8               group by job, deptno )
      9      group by job
     10     /JOB          DEPT_10    DEPT_20    DEPT_30    DEPT_40
    --------- ---------- ---------- ---------- ----------
    ANALYST                       4
    CLERK              2          4          2
    MANAGER            2          2          2
    PRESIDENT          2
    SALESMAN                                 8
      

  4.   

    回复人: bzszp(SongZip) ( ) 信誉:130 
    实际应用中
    可以通过程序来实现根据t1的个数
    动态编写sql语句来实现
     如果要动态生成sql 语法 不如用游标了
      

  5.   

    kerisyml(魂之利刃) ,你的东东偶也明白,但是如果那些10,20,30,40以及dept_10,dept_20,dept_30,dept_40都是存在一张表中,每次执行的时候记录数
    都不相同,这样的话,那样写有问题吧?
    用游标对大数据量的记录数进行统计,是比较费时间和资源的吧。
    除了用第三方工具来动态生成SQL语句之外还有别的方法么?
    比如利用decode的嵌套?
      

  6.   

    在 SQL Server 版里面有针对 SQL Server 的存储过程,你可以去搜索一下