SELECT au_fname, au_lname, 
   CASE state
      WHEN 'CA' THEN 'California'
      WHEN 'KS' THEN 'Kansas'
      WHEN 'TN' THEN 'Tennessee'
      WHEN 'OR' THEN 'Oregon'
      WHEN 'MI' THEN 'Michigan'
      WHEN 'IN' THEN 'Indiana'
      WHEN 'MD' THEN 'Maryland'
      WHEN 'UT' THEN 'Utah'
        END AS StateName
FROM pubs.dbo.authors
ORDER BY au_lname

解决方案 »

  1.   

    SELECT
       CASE 
          WHEN price IS NULL THEN 'Not yet priced'
          WHEN price < 10 THEN 'Very Reasonable Title'
          WHEN price >= 10 and price < 20 THEN 'Coffee Table Title'
          ELSE 'Expensive book!'
       END AS "Price Category",
    CONVERT(varchar(20), title) AS "Shortened Title"
    FROM pubs.dbo.titles
    ORDER BY price
      

  2.   

    -- jadesun(裤衩)
    我不是要实现类似交叉表
    只是对一个变量的值进行判断 
    值为1时候 执行一段语句
    值为2时候 执行一段语句
      

  3.   

    --要执行语句直接有if就行了
    declare @a int
    set @a=1
    if @a=1 begin 
    语句1
    end
    if @a=2 begin
    语句2
    end
    ...--一定要用case,可以这样:
    declare @a int
    declare @b int
    set @a=1
    set @b=case @a when 1 then '语句1' when 2 then '语句2' else '语句3' end
    exec @b
      

  4.   

    --xueguang(xg) 
    直接用IF 知道 但问题是变量要判断的值实在是太多了
    用IF ELSE  很麻烦
    所以我想问下有没有类似于vb的
    select case n
    case "1"
       执行语句
    case "2"
       执行语句
    end select
      

  5.   

    --用case的我也写了,错了点,改一下declare @a int
    declare @b varchar(8000) 
    set @a=1
    set @b=
    case @a 
    when 1 then '语句1' 
    when 2 then '语句2' 
    else '语句3' 
    end
    exec @b
      

  6.   

    没有直接对应的,只能if结合begin...end嵌套或使用动态SQL语句