SELECT *  FROM DY_DEPT WHERE (CITY_ID,BRANCH_ID) = DEPT_ID
这句代码后面的(CITY_ID,BRANCH_ID)= DEPT_ID是什么意思,最近接手一个项目发现有人这么用,但是我测试时会报错。
这句代码是错的么

解决方案 »

  1.   

    SELECT  (select (CASE WHEN '144001' ='141001' THEN REPLACE(CITY_NAME, 'XXXXX') 
                     ELSE REPLACE(REPLACE(BRANCH_NAME,'XXXXX'),'YYY')END) 
                FROM DY_DEPT WHERE (CITY_ID,BRANCH_ID) = BRANDCH_ID) CITY_NAME ,
           SUM(CAPAS1) CAPAS1,SUM(CAPAS2) CAPAS2,SUM(CAPAS3) CAPAS3,SUM(CAPAS4) CAPAS4,SUM(CAPAS5) CAPAS5,SUM(CAPAS6) CAPAS6, 
           SUM(CAPAS7) CAPAS7,SUM(CAPAS8) CAPAS8,SUM(CAPAS9) CAPAS9,SUM(CAPAS10) CAPAS10,SUM(CAPAS11) CAPAS11,SUM(CAPAS12) CAPAS12,DEPT_ID 
          FROM (SELECT DEPT_ID,SERIAL_NUM,ITEM_TITLE2,SUBSTR(RPT_MONTH,1,4) RPT_MONTH,
             SUM(CAPAS1) CAPAS1,SUM(CAPAS2) CAPAS2,SUM(CAPAS3) CAPAS3,SUM(CAPAS4) CAPAS4,SUM(CAPAS5) CAPAS5,SUM(CAPAS6) CAPAS6, 
             SUM(CAPAS7) CAPAS7,SUM(CAPAS8) CAPAS8,SUM(CAPAS9) CAPAS9,SUM(CAPAS10) CAPAS10,SUM(CAPAS11) CAPAS11,SUM(CAPAS12) CAPAS12
             FROM (SELECT DEPT_ID,SERIAL_NUM,ITEM_TITLE2,RPT_MONTH,
             ( CASE WHEN SUBSTR(RPT_MONTH,5,2) ='01'THEN NVL(CAPAS ,0) ELSE 0 END) CAPAS1, ( CASE WHEN SUBSTR(RPT_MONTH,5,2) ='02'THEN NVL(CAPAS ,0) ELSE 0 END) CAPAS2, 
             ( CASE WHEN SUBSTR(RPT_MONTH,5,2) ='03'THEN NVL(CAPAS ,0) ELSE 0 END) CAPAS3, ( CASE WHEN SUBSTR(RPT_MONTH,5,2) ='04'THEN NVL(CAPAS ,0) ELSE 0 END) CAPAS4,
             ( CASE WHEN SUBSTR(RPT_MONTH,5,2) ='05'THEN NVL(CAPAS ,0) ELSE 0 END) CAPAS5, ( CASE WHEN SUBSTR(RPT_MONTH,5,2) ='06'THEN NVL(CAPAS ,0) ELSE 0 END) CAPAS6, 
             ( CASE WHEN SUBSTR(RPT_MONTH,5,2) ='07'THEN NVL(CAPAS ,0) ELSE 0 END) CAPAS7, ( CASE WHEN SUBSTR(RPT_MONTH,5,2) ='08'THEN NVL(CAPAS ,0) ELSE 0 END) CAPAS8, 
             ( CASE WHEN SUBSTR(RPT_MONTH,5,2) ='09'THEN NVL(CAPAS ,0) ELSE 0 END) CAPAS9, ( CASE WHEN SUBSTR(RPT_MONTH,5,2) ='10'THEN NVL(CAPAS ,0) ELSE 0 END) CAPAS10, 
             ( CASE WHEN SUBSTR(RPT_MONTH,5,2) ='11'THEN NVL(CAPAS ,0) ELSE 0 END) CAPAS11,( CASE WHEN SUBSTR(RPT_MONTH,5,2) ='12'THEN NVL(CAPAS ,0) ELSE 0 END) CAPAS12  
             FROM(SELECT DEPT_ID, SERIAL_NUM, ITEM_TITLE2, RPT_MONTH, ROUND(FI_CAPAS_MAX10KV / 10000, 2)+ROUND(FI_CAPAS_MIN10KV / 10000, 2) capas 
              FROM RPT_OP_APPLY_DESC_TMII A 
             WHERE RPT_MONTH between '20100101' and  '20121231' AND INSTR( '144001',DEPT_ID)>0 
               AND VERSION_NUM = (SELECT MAX(VERSION_NUM) FROM RPT_OP_APPLY_ADD_TMII B WHERE A.DEPT_ID = B.DEPT_ID AND A.RPT_MONTH = B.RPT_MONTH)))
             GROUP BY DEPT_ID,SERIAL_NUM,ITEM_TITLE2,SUBSTR(RPT_MONTH,1,4))
                GROUP BY DEPT_ID ORDER BY  DEPT_ID
      

  2.   

    oracle不支持这种写法,同学!这是语法,不可该变的。
    你同事的意思可能是firstname||lastname=name
      

  3.   

    update table set (a,b) =(select c,d from table where condiction)
    这种就行!