黄智勇 发表于 2018-10-23 11:06:10

SQL查询中DECODE函数和CASE WHEN 比较

SELECT   CASE  
            WHEN price IS NULL THEN 'Unpriced'
  
            WHEN price < 10 THEN 'Bargain'
  
            WHEN price BETWEEN 10 and 20 THEN 'Average'
  
            ELSE 'Gift to impress relatives'
  
         END AS "Range",
  
         Title
  
FROM titles
  
where
  
    CASE
  
                WHEN price IS NULL THEN 'Unpriced'
  
                WHEN price < 10 THEN 'Bargain'
  
                WHEN price BETWEEN 10 and 20 THEN 'Average'
  
                ELSE 'Gift to impress relatives'   END in('Average','Bargain')
  
GROUP BY   CASE
  
                WHEN price IS NULL THEN 'Unpriced'
  
                WHEN price < 10 THEN 'Bargain'
  
                WHEN price BETWEEN 10 and 20 THEN 'Average'
  
                ELSE 'Gift to impress relatives'   END,
  
                Title
  
ORDER BY   CASE
  
                WHEN price IS NULL THEN 'Unpriced'
  
                WHEN price < 10 THEN 'Bargain'
  
                WHEN price BETWEEN 10 and 20 THEN 'Average'
  
                ELSE 'Gift to impress relatives'
  
                END,Title
  
SELECT   CASE
  
            WHEN price IS NULL THEN 'Unpriced'
  
            WHEN price < 10 THEN 'Bargain'
  
            WHEN price BETWEEN 10 and 20 THEN 'Average'
  
            ELSE 'Gift to impress relatives'
  
         END AS "Range",
  
         Title
  
FROM titles
  
where
  
    CASE
  
                WHEN price IS NULL THEN 'Unpriced'
  
                WHEN price < 10 THEN 'Bargain'
  
                WHEN price BETWEEN 10 and 20 THEN 'Average'
  
                ELSE 'Gift to impress relatives'   END in('Average','Bargain')
  
GROUP BY   CASE
  
                WHEN price IS NULL THEN 'Unpriced'
  
                WHEN price < 10 THEN 'Bargain'
  
                WHEN price BETWEEN 10 and 20 THEN 'Average'
  
                ELSE 'Gift to impress relatives'   END,
  
                Title
  
ORDER BY   CASE
  
                WHEN price IS NULL THEN 'Unpriced'
  
                WHEN price < 10 THEN 'Bargain'
  
                WHEN price BETWEEN 10 and 20 THEN 'Average'
  
                ELSE 'Gift to impress relatives'
  
                END,Title


页: [1]
查看完整版本: SQL查询中DECODE函数和CASE WHEN 比较