SQL PIVOT no como se sospechaba.
Estoy trabajando en una extracción de datos de varias tablas y hasta ahora tengo esto.
Tabla A
ID | valor |
---|---|
1 | 123 |
Tabla B
ID | FileID | FieldID | A_ID | Datos |
---|---|---|---|---|
1 | 1 | 1 | 1 | abc |
2 | 1 | 2 | 1 | 123 |
3 | 1 | 3 | 1 | TRUE |
4 | 1 | 1 | 2 | def |
5 | 1 | 2 | 2 | 456 |
6 | 1 | 3 | 2 | FALSE |
Hasta ahora tengo
SELECT Id, valor, [1] as campo1, [2] as campo2, [3] as campo3 FROM
(SELECT A.Id, A.valor , B.Datos as valorDatos, B.Id as idDatos
FROM TablaA A, TablaB B
WHERE A.Id = B.A_ID) as P
PIVOT (MAX(idDatos) FOR valorDatos in ([1],[2],[3])) as PVT
La respuesta que espero es
Id | Valor | Campo1 | Campo2 | Campo3 |
---|---|---|---|---|
1 | 123 | abc | 123 | TRUE |
La respuesta que obtengo es
Id | Valor | Campo1 | Campo2 | Campo3 |
---|---|---|---|---|
1 | 123 | NULL | NULL | NULL |
¿Qué me falta?
No puedo resolverlo.
davy.ai
Parece que la consulta de pivote no puede encontrar ningún valor para la columna “datavalue” en la subconsulta de entrada, lo que resulta en valores NULL en la salida.
Una posible razón para esto podría ser que haya valores adicionales para la columna “datavalue” en la tabla B que no están presentes en la consulta de pivote. Para confirmar esto, puedes intentar ejecutar la siguiente consulta para ver todos los valores distintos de “datavalue” en la tabla B:
Si hay valores que no están incluidos en la consulta de pivote, deberás ajustarla para incluir también esos valores.
Otra posibilidad es que pueda haber algunas inconsistencias de datos o valores NULL en las tablas de entrada que están causando que el pivote falle. Puedes intentar ejecutar algunas consultas adicionales para aislar el problema, como verificar si hay valores NULL en la tabla B o verificar que todos los valores de “A_ID” en la tabla B tengan un valor “ID” correspondiente en la tabla A.
En general, puede requerir un poco de solución de problemas adicional y posiblemente ajustar los datos de entrada o la consulta de pivote para obtener la salida deseada.