sql server 中的case when then 语句,sqlcase
--select DataName ,
--case Code
--
-- when 'W01' then '男'
--
-- when 'W07' then '女'
--
-- else '其他'
--
-- end as Code
--from dbo.HistoryData
select DataName,
(
case
when Code='W01' then '男'
when Code='W07' then '女'
else '其他'
end
)
from HistoryData
Access 没有 case when
但是有一个 iif 函数可以处理。
SQL Server:
select bb,cc,case aa when '一星级' then '*'
when '二星级' then '** '
when '三星级' then '*** '
when '四星级' then '**** '
when '五星级' then '***** '
end
from aaa
Access:
select bb,cc,iif(aa='一星级','*',iif(aa='二星级','**',iif(aa='三星级','***',iif(aa='四星级','****',iif(aa='五星级','*****'))))) from aaa;
参考资料:hi.baidu.com/...a.html
A. 使用带有简单 CASE 函数的 SELECT 语句
在 SELECT 语句中,简单 CASE 函数仅检查是否相等,而不进行其他比较。 以下示例使用 CASE 函数更改产品系列类别的显示,以使这些类别更易理解。
USE AdventureWorks;GOSELECT ProductNumber, Category = CASE ProductLine WHEN 'R' THEN 'Road' WHEN 'M' THEN 'Mountain' WHEN 'T' THEN 'Touring' WHEN 'S' THEN 'Other sale items' ELSE 'Not for sale' END, NameFROM Production.ProductORDER BY ProductNumber;GO
B. 使用带有 CASE 搜索函数的 SELECT 语句
在 SELECT 语句中,CASE 搜索函数允许根据比较值在结果集内对值进行替换。 下面的示例根据产品的价格范围将标价显示为文本注释。
USE AdventureWorks;GOSELECT ProductNumber, Name, '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' ENDFROM Production.ProductORDER BY ProductNumber ;GO
C. 使用 CASE 代替 Microsoft Access 中使用的 IIf 函数
CASE 可与 Microsoft Access 中的 IIf 函数提供相似的功能。 以下示例显示一个简单查询,它使用 IIf 为名为 db1.ContactInfo 的 Access 表中的 TelephoneInstructions 列提供输出值。
SELECT FirstName, Lastname, TelephoneNumber, IIf(IsNull(TelephoneInstructions),"Any time", TelephoneInstructions) AS [When to Contact]FROM db1.ContactInfo
以下示例使用 CASE 为 AdventureWorks 视图中的 TelephoneSpecialInstructions 列提供输出值,该视图名称为 Person.vAdditionalContactInfo。
USE AdventureWorksGOSELECT FirstName, Lastname, TelephoneNumber, 'When to Contact' = CASE WHEN T......余下全文>>