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'