transponer pasar multiples funcion filas fechas con columns columnas agregado sql tsql pivot sql-server-2012 data-manipulation

pasar - sql transponer columnas a filas



Pivote valores cateĆ³ricos en columnas booleanas SQL (1)

prueba esto:

select ID, col1A=(case when col1=''A'' then 1 else 0 end), col1B=(case when col1=''B'' then 1 else 0 end) from <table>


SI tiene una identificación con A y B y quiere tener una identificación distinta en la salida, puede hacerlo

select ID, col1A=max(case when col1=''A'' then 1 else 0 end), col1B=max(case when col1=''B'' then 1 else 0 end) from <table> group by id

EDITAR

Según su comentario, si no conoce la cantidad de opciones para col1, puede optar por PIVOT dinámico

DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @cols = STUFF((SELECT distinct '','' + QUOTENAME(col1) from <table> FOR XML PATH(''''), TYPE ).value(''.'', ''NVARCHAR(MAX)'') ,1,1,'''') set @query = ''SELECT id, '' + @cols + '' from <table> pivot ( count([col1]) for col1 in ('' + @cols + '') ) p '' print(@query) execute(@query)


Demostración de SQL Fiddle

Estoy buscando ''aplanar'' mi conjunto de datos para facilitar la extracción de datos. Cada columna categórica debe cambiarse a múltiples columnas booleanas. Tengo una columna con valores categóricos, por ejemplo:

ID col1 1 A 2 B 3 A

Estoy buscando una manera de pivotar esta tabla, y tengo una función agregada que me dice si esta identificación tiene valor A o B:

Resultado:

ID col1A col1B 1 1 0 2 0 1 3 1 0

Intenté usar PIVOT pero no tengo idea de qué función agregada usar dentro de ella.

También busqué respuestas en SF pero no pude encontrar ninguna ...

Estoy usando MS-SQL 2012.

¡Cualquier ayuda sería apreciada! Omri

EDITAR:

El número de categorías en col1 es desconocido, por lo tanto, la solución debe ser dinámica. Gracias :)