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) ----- 2 つの名前が異なるため、括弧内に Exd NAme を表示したいのですが、HMAA USA で、Exd Name も USA の場合 - 「Name」のみを表示したいのですが、 Exd 名ではありません。

これはIFステートメントで可能ですか....これは私のスクリプトです。ご覧のとおり、名前+ Exd Nameがありますが、上記のロジックに従ってのみ表示するために、ここに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 に答える