kirthiga S
Я надеюсь, что это будет работать, даже размер кода меняется
Declare @code varchar(20) ='AX,BX,CX,DX,XX'
;with cte as (
select 1 SNO,LEFT(@code,charindex(',',@code)-1)Code,RIGHT(@code,LEN(@code)-charindex(',',@code))RemCode
union all
select SNO+1,LEFT(RemCode,charindex(',',RemCode)-1),RIGHT(RemCode,LEN(RemCode)-charindex(',',RemCode))from cte where @code is Not null and charindex(',',RemCode)>0
)select Code from cte where SNO=(select max(SNO) from cte)
CHill60
Знаете ли вы, что вы можете использовать ссылку "улучшить решение" для добавления информации к вашему исходному решению? Это лучше, чем публиковать другое решение, потому что это делает его более ясным, что вы переосмыслили сценарий и показываете свой мыслительный процесс - это менее запутанно для читателей.
Однако причина моего голосования-4. Это довольно элегантное решение, если вы углубитесь в него. Он работает для различного количества элементов >= 2 (в то время как мое решение фактически потерпит неудачу, если количество элементов = 2)
Лично я бы объяснил, что решение использует рекурсивное общее табличное выражение для генерации последовательности или списка большинства составных частей в исходной строке (последняя опущена из-за проверки and charindex(',',RemCode)>0
Каждому элементу присваивается номер в том CTE, который представляет его позицию в строке. Затем вы просто выбираете последний элемент в последовательности, чтобы получить желаемый результат.
Другими словами - вы добавляете больше ценности, если объясняете, Как добраться до решения, а не просто сбрасываете код