기본 콘텐츠로 건너뛰기

181119 SELECT 1 FROM

SELECT 1 FROM


select 문에서 1을 사용하여 테이블 개수만큼 1로된 행을 출력
테이블내 행의 개수가 N개라면 N개만큼 행이 반환됨
1은 true를 의미함
WHERE 조건문에서 해당 조건을 만족하면 1을 반환

예)
SELECT * 
  FROM TABLE1 T1 
 WHERE EXISTS (
     SELECT 1 
       FROM TABLE2 T2 
      WHERE T1.ID = T2.ID
 );
cs

예)
SELECT
          T1.AMT_ODR
        , T2.AMT_ODR
        , (DSTB_AMT_SUM / NMPR_CNT) AS ID_RATE
      FROM
         (
          SELECT 1 AS AMT_ODR, DSTB_AMT_SUM 
            FROM MA_RT_PCST 
           WHERE FACC_YYMM    = '201809' 
             AND MNGM_ACNT_CD = 'T60000000' 
             AND MNGM_DEPT_CD = '144260'     /* 영업이익 */
          UNION ALL
          SELECT 2 AS AMT_ODR, DSTB_AMT_SUM 
            FROM MA_RT_PCST 
           WHERE FACC_YYMM       = '201809' 
             AND MNGM_ACNT_CD = 'T90000000' 
             AND MNGM_DEPT_CD = '144260'    /* 세전이익 */
          UNION ALL
          SELECT 3 AS AMT_ODR, SUM(OORD_AMT) 
            FROM MA_RT_MM_CLSG_PRFT 
           WHERE FACC_YYMM       = '201809' 
             AND MNGM_DEPT_CD = '144260'     /* 수주실적 */
          UNION ALL
          SELECT 4 AS AMT_ODR, SUM(OORD_NEW_DPST + OORD_CAFW_DPST) 
            FROM MA_RT_MM_CLSG_PRFT 
           WHERE FACC_YYMM       = '201809' 
             AND MNGM_DEPT_CD = '144260'     /* 입금실적 */
         ) T1
     CROSS JOIN
        (
         SELECT 1 AS AMT_ODR, SUM(SLRY_PAY_AMT) AS NMPR_CNT 
           FROM MA_MI_DEPT_SLRY 
          WHERE FACC_YYMM = '201809' 
            AND CMPN_CD   = '1000' 
            AND DSTB_STDR = 'C0023' 
            AND DEPT_CD   = '111136'         /* 인건비 */
         UNION ALL
         SELECT 2 AS AMT_ODR, NMPR_CNT 
           FROM MA_MI_DEPT_NMPR 
          WHERE FACC_YYMM = '201809' 
            AND CMPN_CD = '1000' 
            AND DSTB_STDR ='C0020' 
            AND DEPT_CD = '144260'             /* 인원수 */
         ) T2
    ORDER BY T2.AMT_ODR, T1.AMT_ODR 
cs

https://stackoverflow.com/questions/7171041/what-does-it-mean-by-select-1-from-table