Newsgroup: it.comp.software.database
Titolo: E' possibile con una query fare questo?

salve ragazzi...
ho una tabella fatta cosi...
+----------+------+----------+---------------------------+--------+-------------+-------------+--------------+
| Localita | Anno | Parcella | Tesi                      | Sanita |
Classe20_50 | Classe50_80 | Classe80_100 |
+----------+------+----------+---------------------------+--------+-------------+-------------+--------------+
|        1 | 2004 | 10B      | PIANTA DA VASO (3,6x1)    | SANA   |
   0.00 |        2.38 |        97.62 |
|        1 | 2004 | 10B      | PIANTA DA VASO (3,6x1,25) | SANA   |
   6.67 |       41.67 |        51.67 |
|        1 | 2004 | 10B      | RADICE NUDA (3,6x1)       | SANA   |
   5.00 |       20.00 |        75.00 |
|        1 | 2004 | 10B      | RADICE NUDA (3,6x1,25)    | SANA   |
   0.00 |        5.56 |        94.44 |
|        1 | 2005 | 10B      | PIANTA DA VASO (3,6x1)    | SANA   |
   1.13 |       18.86 |        80.01 |
|        1 | 2005 | 10B      | PIANTA DA VASO (3,6x1,25) | SANA   |
   2.86 |       35.24 |        61.90 |
|        1 | 2005 | 10B      | RADICE NUDA (3,6x1)       | SANA   |
   0.70 |       26.73 |        72.57 |
|        1 | 2005 | 10B      | RADICE NUDA (3,6x1,25)    | SANA   |
   1.04 |       18.71 |        80.25 |
+----------+------+----------+---------------------------+--------+-------------+-------------+--------------+
vorrei ottenere una tabella di questo tipo (ottenuta con openoffice
datapilot, simile alle tabelle pivot):
Localita	Anno	Parcella	Tesi	Sanita	Tipo dato	Valore
1	2004	 10B      	 PIANTA DA VASO (3,6x1)    	 SANA   	 Classe20_50 	0
2	2004	 10B      	 PIANTA DA VASO (3,6x1)    	 SANA   	 Classe50_80
	2.38
3	2004	 10B      	 PIANTA DA VASO (3,6x1)    	 SANA   	 Classe80_100
	97.62
4	2004	 10B      	 PIANTA DA VASO (3,6x1,25) 	 SANA   	 Classe20_50
	6.67
5	2004	 10B      	 PIANTA DA VASO (3,6x1,25) 	 SANA   	 Classe50_80
	41.67
6	2004	 10B      	 PIANTA DA VASO (3,6x1,25) 	 SANA   	 Classe80_100
	51.67
7	2004	 10B      	 RADICE NUDA (3,6x1)       	 SANA   	 Classe20_50 	5
8	2004	 10B      	 RADICE NUDA (3,6x1)       	 SANA   	 Classe50_80 	20
9	2004	 10B      	 RADICE NUDA (3,6x1)       	 SANA   	 Classe80_100
	75
10	2004	 10B      	 RADICE NUDA (3,6x1,25)    	 SANA   	 Classe20_50 	0
11	2004	 10B      	 RADICE NUDA (3,6x1,25)    	 SANA   	 Classe50_80
	5.56
12	2004	 10B      	 RADICE NUDA (3,6x1,25)    	 SANA   	 Classe80_100
	94.44
13	2005	 10B      	 PIANTA DA VASO (3,6x1)    	 SANA   	 Classe20_50
	1.13
14	2005	 10B      	 PIANTA DA VASO (3,6x1)    	 SANA   	 Classe50_80
	18.86
15	2005	 10B      	 PIANTA DA VASO (3,6x1)    	 SANA   	 Classe80_100
	80.01
16	2005	 10B      	 PIANTA DA VASO (3,6x1,25) 	 SANA   	 Classe20_50
	2.86
17	2005	 10B      	 PIANTA DA VASO (3,6x1,25) 	 SANA   	 Classe50_80
	35.24
18	2005	 10B      	 PIANTA DA VASO (3,6x1,25) 	 SANA   	 Classe80_100
	61.9
19	2005	 10B      	 RADICE NUDA (3,6x1)       	 SANA   	 Classe20_50
	0.7
20	2005	 10B      	 RADICE NUDA (3,6x1)       	 SANA   	 Classe50_80
	26.73
21	2005	 10B      	 RADICE NUDA (3,6x1)       	 SANA   	 Classe80_100
	72.57
22	2005	 10B      	 RADICE NUDA (3,6x1,25)    	 SANA   	 Classe20_50
	1.04
23	2005	 10B      	 RADICE NUDA (3,6x1,25)    	 SANA   	 Classe50_80
	18.71
24	2005	 10B      	 RADICE NUDA (3,6x1,25)    	 SANA   	 Classe80_100
	80.25
in pratica vorrei trasformare 3 campi in righe...
Aiutatemi per favore!
Ivan

 Aiutatemi per favore!
capito niente,
ma vorresti in pratica ridondare dei dati,
il problema e' dove arriva, in senso di numero di colonne, la tua chiave
se riesci a sdoppiare le righe si puo',
se ho capito quello che vorresti fare
felice_pago
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

felice_pago ha scritto:

Grazie per la risposta cosi' celere...
Il mio obiettivo non e' ridondare i dati, ma mostrarli in un altro
modo.
Se guardi la seconda tabella riesci a capire cosa intendo.... mi spiace
se le info sono tante :)
ho 3 campi chiamati Classe20_50,Classe50_80,Classe80_100 e vorrei
trasformarli in un campo solo chiamato Valore (ecco la trasformazione
in 3 record) , . Il nome del campo ( che puo essere
Classe20_50,Classe50_80,Classe80_100) dovrebbe venir registrato in un
campo descrittivo "Tipo dato".
Piu' difficile da spiegare che da vedere... scusami...
Aiutatemi please... :(
Ivan

 ha scritto:
fai una vista sulla tabella ?


felice_pago ha scritto:

Grazie Felice...
non riesco a capire come una vista possa aiutarmi rispetto ad una query
normale :(
Ivan

 normale :(
mi sono perso ?
adesso ho reimpaginato i dati, e NON lo puoi fare con una query,
inoltre te hai un valore unico per localita', 1, e poi te ne esci con
24 valori diversi ?
unica cosa che mi viene in mente, un script pls-sql,
dove localita' diventa un progressivo, ?,
e via dicendo


 Aiutatemi per favore!
Ciao Ivan,
puoi usaer l'operatore UNION ALL
es.
----
SELECT Localita,Anno,Parcella,Tesi,Sanita,
       "Classe20_50" AS Dato, Classe20_50 AS Valore
From Tabella
UNION ALL
SELECT Localita,Anno,Parcella,Tesi,Sanita,
       "Classe50_80" AS Dato, Classe50_80 AS Valore
From Tabella
UNION ALL
SELECT Localita,Anno,Parcella,Tesi,Sanita,
       "Classe80_100" AS Dato, Classe80_100 AS Valore
From Tabella
----
Ciao
-- 
Giorgio Rancati
[Office Access MVP]

 ha scritto nel
messaggio news:44ddcb40$0$996$5fc...@news.tiscali.it...
ah, volevi anche una numerazione progressiva, questa dipende dal tuo Db
Qui un esempio con Sql Server 2005
----
WITH Tbl AS (
SELECT Localita,Anno,Parcella,Tesi,Sanita,
       "Classe20_50" AS Dato, Classe20_50 AS Valore
From Tabella
UNION ALL
SELECT Localita,Anno,Parcella,Tesi,Sanita,
       "Classe50_80" AS Dato, Classe50_80 AS Valore
From Tabella
UNION ALL
SELECT Localita,Anno,Parcella,Tesi,Sanita,
       "Classe80_100" AS Dato, Classe80_100 AS Valore
From Tabella)
SELECT ROW_NUMBER() OVER(ORDER BY Localita,Dato),*
FROM Tbl
