Tsql 在CASE-WHEN选项中需要IF-ELSE

Tsql 在CASE-WHEN选项中需要IF-ELSE,tsql,stored-procedures,sql-server-2012,Tsql,Stored Procedures,Sql Server 2012,我有一个现有的存储过程,如下所示: SELECT TOP 1 ... CASE PX.Client.value('(Type)[1]', 'varchar(25)') WHEN 'Sole Proprietor' THEN 'SPR' WHEN 'Partnership' THEN 'PAR' WHEN 'Corp (C)' THEN 'COR' WHEN 'Corp (S)' THEN 'SCO' WHEN 'LimitedC

我有一个现有的存储过程,如下所示:

SELECT TOP 1
...
    CASE PX.Client.value('(Type)[1]', 'varchar(25)')
      WHEN 'Sole Proprietor' THEN 'SPR'
      WHEN 'Partnership' THEN 'PAR'
      WHEN 'Corp (C)' THEN 'COR'
      WHEN 'Corp (S)' THEN 'SCO'
      WHEN 'LimitedCorp' THEN 'LLC'
      WHEN 'Trust' THEN 'TRU'
    END AS MyStructure,
...
INTO #Prod 
FROM 
  @XMLIN.nodes('/MyDataset/MyRegistration') AS PX(Client)
除了我需要改变逻辑之外,一切都很好。现在,如果类型是“LimitedCorp”,那么MyStructure总是“LLC”。但我需要修改它,以便它根据分类法对MyStructure进行细分,如(伪代码):


在我的.NET代码中,这将是小菜一碟!不过,我的存储过程语法不是很强!谢谢

嵌套另一个
案例

WHEN 'LimitedCorp' THEN 

    case 
       when PX.Client.value('(TaxClassification)[1]') == 'Partnership' then 'LP'
       when PX.Client.value('(TaxClassification)[1]') == 'SCorp' then 'LLS'
       else 'LLC'
    end

WHEN 'Trust' THEN 'TRU'
WHEN 'LimitedCorp' THEN 

    case 
       when PX.Client.value('(TaxClassification)[1]') == 'Partnership' then 'LP'
       when PX.Client.value('(TaxClassification)[1]') == 'SCorp' then 'LLS'
       else 'LLC'
    end

WHEN 'Trust' THEN 'TRU'