SQL Select语句中的IF语句

时间:2012-11-20 06:21:34

标签: sql

我正在尝试编写一个IF语句,它将执行以下操作.....

以下是表格中的结果示例....

Name        Exd Name                 RESULT
 HMAA  USA       USA                  HMAA USA
 HMIT  ITL       ITL                  HMIT ITL
 HMTT   LOG       HYT                HMTT LOG (HYT)
 LTYS   LTT      FYM                  LTYS LTT (FYM)
 TTTT   FFF      PPP                 TTTT FFF (PPP)
 FDSE   FGR      FGR                 FDSE FGR

结果应显示如下

HMTT LOG(HYT)-----因为两个名字不同我想在括号中显示Exd NAme),但是当  HMAA USA和Exd Name也是美国 - 我只想显示'姓名',而不是Exd Name。

这是否可以在IF语句中使用....这是我的脚本,因为你可以看到它有名称+ Exd Name,但是上面我想在这里加入一个IIF语句只显示如上逻辑。

SELECT  distinct  RNL.EmplID,
RNL.ServiceType, rnl.[name] + ' ' + '(' + rnl.[Exd Name] + ')' as 'Vessel'
FROM
resultsIB RNL (nolock)

2 个答案:

答案 0 :(得分:2)

如果是SQL Server,您可以尝试:

select distinct RNL.EmplID, RNL.ServiceType, 
    rnl.[name] + 
    case 
        when rnl.[name] like '%' + rnl.[Exd Name]
        then ''
        else ' (' + rnl.[Exd Name] + ')'
    end as 'Vessel'
FROM resultsIB RNL (nolock)

或使用iif (SQL Server 2012 only AFAIK) IIF是撰写CASE 的简写方式:

select distinct RNL.EmplID, RNL.ServiceType, 
    rnl.[name] + 
    iif(rnl.[name] like '%' + rnl.[Exd Name], '', ' (' + rnl.[Exd Name] + ')') as 'Vessel'
FROM resultsIB RNL (nolock)

答案 1 :(得分:0)

SELECT distinct  RNL.EmplID, RNL.ServiceType,
       CASE WHEN CHARINDEX(ExdName, Name) = 0
            THEN Name + ' (' + ExdName + ')'
            ELSE Name END AS 'Vessel'
FROM resultsIB RNL (nolock)