SQL select case when子句

时间:2012-09-26 08:12:01

标签: sql oracle plsql case

以下是查询

select *,  "Price Range" = 
  CASE 
     WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
     WHEN ListPrice < 50 THEN 'Under $50'
     WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
     WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
     ELSE 'Over $1000'
  END
  FROM Production.Product
      ORDER BY ProductNumber

但是存在SQL错误,在FROM之前缺少重要的单词。

如果我想选择所有列,我们使用case的蓝图是什么?

5 个答案:

答案 0 :(得分:6)

试试这个

select *, 
  CASE 
     WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
     WHEN ListPrice < 50 THEN 'Under $50'
     WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
     WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
     ELSE 'Over $1000'
  END AS [Price Range]
  FROM Production.Product
      ORDER BY ProductNumber

答案 1 :(得分:4)

在结束后放置列名,您的查询不正确,应该是

SELECT p.ProductName, 
  CASE 
     WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
     WHEN ListPrice < 50 THEN 'Under $50'
     WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
     WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
     ELSE 'Over $1000'
  END AS Price_Range
FROM Product p

但您的产品与客户之间是否存在链接

答案 2 :(得分:2)

我认为alias应该在Oracle的案例陈述之后。试试这个,

SELECT  *  ,
        CASE 
            WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
            WHEN ListPrice < 50 THEN 'Under $50'
            WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
            WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
            ELSE 'Over $1000'
        END AS "Price Range"
FROM    Production.Product
ORDER BY ProductNumber

答案 3 :(得分:1)

为什么选择from customer

select *, 
  CASE  
     WHEN ListPrice =  0 THEN 'Mfg item - not for resale' 
     WHEN ListPrice < 50 THEN 'Under $50' 
     WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250' 
     WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000' 
     ELSE 'Over $1000' 
  END as [Price Range]
  FROM Production.Product 
      ORDER BY ProductNumber 

答案 4 :(得分:1)

应该是:

 select *, "Price Range" = 
 CASE 
    WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
    WHEN ListPrice < 50 THEN 'Under $50'
    WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
    WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
 ELSE 'Over $1000'
 END
    FROM Production.Product
    ORDER BY ProductNumber