1

我正在尝试编写一个 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 名称),但是当 HMAA USA 和 Exd 名称也是 USA - 我只想显示“名称”,不是 Exd 名称。

这在 IF 语句中是否可能......这是我的脚本,如您所见,它具有名称 + Exd 名称,但是在上面我想在此处合并一个 IIF 语句以仅按照上述逻辑显示。

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

2 回答 2

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 AFAIK)IIF是编写 a 的简写方式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)
于 2012-11-20T06:33:37.547 回答
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)
于 2012-11-20T10:13:03.143 回答