[MySql] Problema con raggruppamento

martedì 21 ottobre 2008 - 11.34

Gemini Profilo | Expert

Ciao a tutti,
ho la seguente tabella:
id_costo | ndx_tariffa | n_persone | numero_notti | costo | trattamento

trattamento può assumere: sp, hb, fb, bb, ai

Supponiamo di avere questo:
id_costo | ndx_tariffa | n_persone | numero_notti | costo | trattamento
1 1 1 1 1 sp
2 1 1 1 2 hb
3 1 2 1 3 sp
4 1 2 1 4 hb

Vorrei una tabella di questo tipo:
n_persone | numero_notti | sp | hb | fb | bb | ai
1 1 1 2
2 1 3 4

Ho provato in questo modo:
SELECT sp, hb, fb, bb, ai FROM (SELECT id_costo, ndx_tariffa, n_persone, numero_notti, if(trattamento='SP',costo, null) as sp, if(trattamento='HB',costo, null) as hb, if(trattamento='FB',costo, null) as fb, if(trattamento='BB',costo, null) as bb, if(trattamento='AI',costo, null) as ai FROM costi WHERE ndx_tariffa=39439) as c

ricevo questa tabella:
n_persone | numero_notti | sp | hb | fb | bb | ai
1 1 1 null null null null
1 1 null 2 null null null
2 1 3 null null null null
2 1 null 4 null null null

Come faccio ad avere la tabella con solo le 2 righe con tutti i trattamenti?
Grazie mille

lbenaglia Profilo | Guru

>ricevo questa tabella:
>n_persone | numero_notti | sp | hb | fb | bb | ai
> 1 1 1 null null null null
> 1 1 null 2 null null null
> 2 1 3 null null null null
> 2 1 null 4 null null null
>
>Come faccio ad avere la tabella con solo le 2 righe con tutti
>i trattamenti?

Non conosco MySQL, ma prendendo spunto dalla tua query dovresti risolvere con qualcosa del genere:

SELECT n_persone , numero_notti , MAX(sp) AS sp , MAX(hb) AS hb , MAX(fb) AS fb , MAX(bb) AS bb , MAX(ai) AS ai FROM ( SELECT n_persone , numero_notti , if(trattamento='SP',costo, null) as sp , if(trattamento='HB',costo, null) as hb , if(trattamento='FB',costo, null) as fb , if(trattamento='BB',costo, null) as bb , if(trattamento='AI',costo, null) as ai FROM costi WHERE ndx_tariffa=39439 ) AS Q GROUP BY n_persone, numero_notti;

>Grazie mille
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5