Sono nuovo di SQL e stavo cercando di eseguire una tabella incrociata in Postgres. L'avrei fatto in Excel, ma ho un database di circa 3,5 milioni di righe, 20.000 valori diversi per il codice, 7 categorie in cat e valori variabili da 1 a 100. Un codice può avere solo alcune delle 7 categorie.Scheda incrociata PostgreSQL con tre colonne con valori sommati da una colonna
Excel non può gestire il numero di righe, quindi SQL è.
miei dati è in forma
code | cat | value |
--------------------------------
abc123 | 1 | 4 |
abc234 | 2 | 6 |
abc345 | 1 | 1 |
abc123 | 3 | 2 |
abc123 | 6 | 12 |
con il codice e il gatto come testo, valore integer memorizzata in una tabella Postgres.
Vorrei eseguire una tabella incrociata su codice e cat, con somma di valore. Mi piacerebbe che mostrasse zero invece di 'null' nel ritorno, ma se 'null' sarebbe una query più semplice, allora sarebbe bene.
Così l'uscita che vorrei è
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 |
Ho cercato il file di aiuto Postgres e altri forum; la cosa più vicina era la domanda SO PostgreSQL Crosstab Query ma non riuscivo a capire come sommare i valori dalla terza colonna.
Qualsiasi assistenza sarebbe molto apprezzata.
Avete qualcosa finora? ;) – plaes
solo frustrazione .. provato molti esempi da molti siti. anche facendo una semplice tabella incrociata, sto ricevendo errore 42601 .. tipo disadattamento – Siraj
Sì, ma che cosa hai provato finora? – plaes