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
-- 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 |