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
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
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
我不是要实现类似交叉表
只是对一个变量的值进行判断
值为1时候 执行一段语句
值为2时候 执行一段语句
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
直接用IF 知道 但问题是变量要判断的值实在是太多了
用IF ELSE 很麻烦
所以我想问下有没有类似于vb的
select case n
case "1"
执行语句
case "2"
执行语句
end select
declare @b varchar(8000)
set @a=1
set @b=
case @a
when 1 then '语句1'
when 2 then '语句2'
else '语句3'
end
exec @b