SQLにおけるCaseの使い方(学習)

4166 ワード

Case      。  Case   Case    。 
--  Case  
CASE sex
         WHEN '1' THEN ' '
         WHEN '2' THEN ' '
ELSE '  ' END
--Case    
CASE WHEN sex = '1' THEN ' '
         WHEN sex = '2' THEN ' '
ELSE '  ' END

     ,         。  Case           ,   Case      ,         ,      。 
           ,Case              ,   Case         。 
--   ,    SQL,       “   ”    
CASE WHEN col_1 IN ( 'a', 'b') THEN '   '
         WHEN col_1 IN ('a')       THEN '   '
ELSE'  ' END

        ,  Case          。 

 ,                ,  。 

     :(       ,          ,          Primary Key) 
  (country)	  (population)
  	600
  	100
   	100
  	200
  	300
  	250
  	200
   	50
  	250

          ,             。          。 
 	  
  	1100
   	250
  	700

        ,     ?       Code View,       ,                。 
    Case  ,SQL    : 
SELECT  SUM(population),
        CASE country
                WHEN '  '     THEN '  '
                WHEN '  '     THEN '  '
                WHEN '  '     THEN '  '
                WHEN '  '     THEN '   '
                WHEN '   '  THEN '   '
                WHEN '   '  THEN '   '
        ELSE '  ' END
FROM    Table_A
GROUP BY CASE country
                WHEN '  '     THEN '  '
                WHEN '  '     THEN '  '
                WHEN '  '     THEN '  '
                WHEN '  '     THEN '   '
                WHEN '   '  THEN '   '
                WHEN '   '  THEN '   '
        ELSE '  ' END;

   ,                  ,          。SQL    ; 
SELECT
        CASE WHEN salary <= 500 THEN '1'
             WHEN salary > 500 AND salary <= 600  THEN '2'
             WHEN salary > 600 AND salary <= 800  THEN '3'
             WHEN salary > 800 AND salary <= 1000 THEN '4'
        ELSE NULL END salary_class,
        COUNT(*)
FROM    Table_A
GROUP BY
        CASE WHEN salary <= 500 THEN '1'
             WHEN salary > 500 AND salary <= 600  THEN '2'
             WHEN salary > 600 AND salary <= 800  THEN '3'
             WHEN salary > 800 AND salary <= 1000 THEN '4'
        ELSE NULL END;

 ,   SQL           。 

      
  (country)	  (sex)	  (population)
  	1	340
  	2	260
  	1	45
  	2	55
   	1	51
   	2	49
  	1	40
  	2	60

           ,       
  	 	 
  	340	260
  	45	55
   	51	49
  	40	60

     , UNION              。        (  Select  ),  SQL      。 
       Case             
SELECT country,
       SUM( CASE WHEN sex = '1' THEN 
                      population ELSE 0 END),  --    
       SUM( CASE WHEN sex = '2' THEN 
                      population ELSE 0 END)   --    
FROM  Table_A
GROUP BY country;

      Select,           ,     Case     。 

 , Check   Case  。 

 Check   Case                   。           Check,                      SQL   Check。 
          
  A,        ,          1000 。   Check Case     ,     
CONSTRAINT check_salary CHECK
           ( CASE WHEN sex = '2'
                  THEN CASE WHEN salary > 1000
                        THEN 1 ELSE 0 END
                  ELSE 1 END = 1 )

      Check,     
CONSTRAINT check_salary CHECK
           ( sex = '2' AND salary > 1000 )

           ,         。