PDA

View Full Version : [SQL] completamento campi di una tabella


Tommy81
22-10-2012, 11:13
Salve ragazzi mi servirebbe un aiuto per risolvere un problema in Sql. Ho una tabella costituita da due colonne:

Cod. Nome
1 Marco
1 Luca
1 Stefano
1 Alessio
2 Marco
2 Luca
3 Stefano

Io la vorrei ordinata coi null dove mancano i nomi secondo l'ordine (Marco, Luca, Stefano, Alessio). In modo da avere per ogni codice ho 4 righe (come tutti i nomi anche dove mancano) Cioè dovrebbe venire così...

Cod. Nome
1 Marco
1 Luca
1 Stefano
1 Alessio
2 Marco
2 Luca
2 null
2 null
3 null
3 null
3 Stefano
3 null

Ho provato senza successo con join interni alla tabella. Grazie

digitalsound
29-10-2012, 14:40
SELECT * FROM
(SELECT DISTINCT T_Nomi.Cod
FROM T_Nomi) as GroupIDs, (
SELECT DISTINCT T_Nomi.Nome
FROM T_Nomi) as GroupNames

ORDER BY GroupIDs.Cod

Con questa ottieni

Cod. Nome
1 Marco
1 Luca
1 Stefano
1 Alessio
2 Marco
2 Luca
2 Stefano
2 Alessio
3 Marco
3 Luca
3 Stefano
3 Alessio

Non è ancora la soluzione, ma ti può aiutare per proseguire...
Forse con una ulteriore JOIN con la tabella dei nomi, si riesce a mettere i NULL per quelli in cui non c'è l'associazione.

digitalsound
29-10-2012, 16:21
Risolto. Ecco la query completa (compatibile con ACCESS):

SELECT Associazioni.Cod, IIf(EXISTS (SELECT * FROM T_NOMI Where Associazioni.Cod = T_Nomi.Cod And Associazioni.Nome = T_Nomi.Nome), Nome, NULL) As NomeU FROM

(SELECT * FROM
(SELECT DISTINCT T_Nomi.Cod
FROM T_Nomi) as GroupIDs, (
SELECT DISTINCT T_Nomi.Nome
FROM T_Nomi) as GroupNames

ORDER BY GroupIDs.Cod) Associazioni
ORDER BY Associazioni.Cod;

Se devi farla in T-SQL Usi la sintassi SELECT CASE WHEN al posto di IIf