我正在尝试编写一个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)
答案 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)