Soy nuevo en SQL e intentaba hacer una tabla cruzada en Postgres. Lo habría hecho en Excel, pero tengo una base de datos de alrededor de 3.5 millones de filas, 20,000 valores diferentes para el código, 7 categorías en cat y valores variables de 1 a 100. Un código puede tener solo algunas de las 7 categorías.Pestaña cruzada de PostgreSQL con tres columnas con valores sumados de una columna
Excel no puede controlar el número de filas, por lo que SQL es.
Mis datos es en forma
code | cat | value |
--------------------------------
abc123 | 1 | 4 |
abc234 | 2 | 6 |
abc345 | 1 | 1 |
abc123 | 3 | 2 |
abc123 | 6 | 12 |
con código y el gato como texto, como valor entero almacenado en una tabla de Postgres.
Me gustaría realizar una tabla cruzada de código y gato, con suma de valor. Me gustaría mostrar cero en lugar de 'nulo' en el retorno, pero si 'nulo' sería una consulta más simple, estaría bien.
lo que la salida me gustaría es
code | 'cat=0' | 'cat=1' | 'cat=2' | 'cat=3' | 'cat=4' | 'cat=5' | 'cat=6'|
abc123 | 25 | 0 | 3 | 500 | 250 | 42 | 0 |
abc234 | 0 | 100 | 0 | 10 | 5 | 0 | 25 |
abc345 | 1000 | 0 | 0 | 0 | 0 | 0 | 0 |
He buscado en los archivos de ayuda de Postgres y otros foros; Lo más parecido fue la pregunta PostgreSQL Crosstab Query, pero no pude encontrar la manera de sumar los valores de la tercera columna.
Cualquier ayuda sería muy apreciada.
¿Tiene algo hasta ahora? ;) – plaes
solo frustración ... intenté muchos ejemplos de muchos sitios. incluso haciendo una tabla cruzada simple, obtengo el error 42601 ... no coinciden – Siraj
Sí, pero ¿qué has intentado hasta ahora? – plaes