tipos texto subconsultas string_split separar restriccion por dividir delimitada comas columnas check cadena sql sql-server sql-server-2008 sql-server-2008-r2

texto - El servidor SQL llena una tabla basada en otra tabla con una subcadena como nombre de columna



string_split (2)

Espero que esto ayude

declare @temp table (id1 nvarchar(99), id2 nvarchar(99), value int) insert into @temp values (''tyb'',''uanwe_A'',6963) insert into @temp values (''tyb'',''uanwe_B'',979 ) insert into @temp values (''tyb'',''uanwe_C'',931 ) select id1, substring(id2,1, 5) id2, max(case substring(id2,7, 1) when ''A'' then value end) vA, max(case substring(id2,7, 1) when ''B'' then value end) vB, max(case substring(id2,7, 1) when ''C'' then value end) vC from @temp GROUP BY id1,substring(id2,1, 5)

Me gustaría completar una tabla basada en una tabla determinada:

Dada la tabla t1:

id1 (string), id2 (string), value (float) tyb uanwe_A 6963 tyb uanwe_B 979 tyb uanwe_C 931

Necesito :

id1, id2, vA, vB, vC tyb uanwe 6963 979 931

Mi consulta del servidor SQL:

select case substring(id2, 6, 1) when ''A'' then [value] end as [vA] from t1

pero esto no funciona para mí porque obtuve muchos "nulos" en el caso de que la subcadena (id2, 6, 1) no sea ''A''.

select case substring(id2, 6, 1) when ''A'' then [value] end as [vA] when ''B'' then [value] end as [vB] when ''C'' then [value] end as [vC] end from t1

TENGO ERROR:

Incorrect syntax near the keyword ''when''.

Cualquier ayuda sería apreciada.


Prueba PIVOT

Demostración de SQL Fiddle

-- Pivot table with one row and five columns SELECT [id1], [uanwe_A], [uanwe_B], [uanwe_C] FROM ( SELECT [id1], [id2], [value] FROM table1) AS SourceTable PIVOT ( AVG([value]) FOR [id2] IN ([uanwe_A], [uanwe_B], [uanwe_C]) ) AS PivotTable;

SALIDA

Agrego otro id1 para que el ejemplo sea más claro

| id1 | uanwe_A | uanwe_B | uanwe_C | |-----|---------|---------|---------| | tyb | 6963 | 979 | 931 | | tyC | 111 | 222 | 333 |