SQL: separa la list de cadenas separadas por comas con una consulta?

Aquí está la estructura de mi table:

id PaymentCond 1 ZBE1, AP1, LST2, CC1 2 VB3, CC1, ZBE1 

Necesito dividir la columna PaymentCond , y me encantaría hacer eso con una simple consulta sql ya que no tengo ni idea de cómo usar las funciones y me encantaría mantener todo simple.

Esto es lo que ya encontré:

 SELECT id, Substring(PaymentConditions, 1, Charindex(',', PaymentConditions)-1) as COND_1, Substring(PaymentConditions, Charindex(',', PaymentConditions)+1, LEN(ANGEBOT.STDTXT)) as COND_2 from Payment WHERE id = '1' 

Pero esto solo produce

 id COND_1 COND_2 1 ZBE1 AP1, LST2, CC1 

¿Hay alguna manera de dividir todo, desde PaymentConditions hasta COND_1 , COND_2 , COND_3 y demás?

Gracias por adelantado.

 declare @SchoolYearList nvarchar(max)='2014,2015,2016' declare @start int=1 declare @length int=4 create table #TempFY(SchoolYear int) while @start<len(@SchoolYearList) BEGIN Insert into #TempFY select SUBSTRING(@SchoolYearList,@start,@length) set @start=@start+5 END Select SchoolYear from #TempFY 
  first create function to split values create function [dbo].[udf_splitstring] (@tokens varchar(max), @delimiter varchar(5)) returns @split table ( token varchar(200) not null ) as begin declare @list xml select @list = cast('<a>' + replace(@tokens, @delimiter, '</a><a>') + '</a>' as xml) insert into @split (token) select ltrim(t.value('.', 'varchar(200)')) as data from @list.nodes('/a') as x(t) return end CREATE TABLE #Table1 ([id] int, [PaymentCond] varchar(20)) ; INSERT INTO #Table1 ([id], [PaymentCond]) VALUES (1, 'ZBE1, AP1, LST2, CC1'), (2, 'VB3, CC1, ZBE1') ; select id, token FROM #Table1 as t1 CROSS APPLY [dbo].UDF_SPLITSTRING([PaymentCond],',') as t2 

salida

 id token 1 ZBE1 1 AP1 1 LST2 1 CC1 2 VB3 2 CC1 2 ZBE1 
    Intereting Posts