Sicht auf Tabelle
riraru
- datenbank
0 waflija0 Alexander (HH)0 riraru0 Frank (no reg)0 riraru
0 Tabellenkalk
Mahlzeit!
Mir liegt (in ACCESS) eine Tabelle vor, die hintereinander weg Messwerte beinhaltet:
nr probenr wert parameter
1 40 20,2 PARAM_1
2 40 0,15 PARAM_2
3 40 4,25 PARAM_3
4 50 18,9 PARAM_1
5 50 0,05 PARAM_2
6 50 6,15 PARAM_3
Machen möchte ich (für einen Excelbericht) folgendes:
probenr wert_param_1 wert_param_2 wert_param_3
40 20,2 0,15 4,25
50 18,9 0,05 6,15
also irgendwie ein halbes transponieren... Mache ich das mit JOIN, also erst mit SELECT über jeden Parameter und dann mit JOIN zusammen?
Hat jemand eine Idee?
riraru
Mahlzeit!
Mir liegt (in ACCESS) eine Tabelle vor, die hintereinander weg Messwerte beinhaltet:
nr probenr wert parameter
1 40 20,2 PARAM_1
2 40 0,15 PARAM_2
3 40 4,25 PARAM_3
4 50 18,9 PARAM_1
5 50 0,05 PARAM_2
6 50 6,15 PARAM_3Machen möchte ich (für einen Excelbericht) folgendes:
probenr wert_param_1 wert_param_2 wert_param_3
40 20,2 0,15 4,25
50 18,9 0,05 6,15also irgendwie ein halbes transponieren... Mache ich das mit JOIN, also erst mit SELECT über jeden Parameter und dann mit JOIN zusammen?
Hat jemand eine Idee?riraru
Eine (SQL) Abfrage pro Spalte in der Exceltabelle:
1. : SELCET DISTINCT probennr FROM tabelle
2: : SELECT wert FROM tabelle WHERE parameter LIKE 'PARAM_1'
3: : SELECT wert FROM tabelle WHERE parameter LIKE 'PARAM_2'
usw.
sollte funktionieren...
Moin Moin!
Eine (SQL) Abfrage pro Spalte in der Exceltabelle:
- : SELCET DISTINCT probennr FROM tabelle
2: : SELECT wert FROM tabelle WHERE parameter LIKE 'PARAM_1'
3: : SELECT wert FROM tabelle WHERE parameter LIKE 'PARAM_2'
usw.sollte funktionieren...
NEIN!
Warum LIKE für einen exakten Vergleich? Access ist schon so langsam genug, da muß man nicht auch noch mit LIKE bremsen!
Und wie kommen die Werte und Nummern deiner Meinung nach wieder zusammen? SQL garantiert KEINE Reihenfolge, so lange nicht explizit mit SORT gearbeitet wird.
Am Ende hast Du so nur Datenmüll.
Alexander
Moin Moin!
Mahlzeit!
Mir liegt (in ACCESS) eine Tabelle vor, die hintereinander weg Messwerte beinhaltet:
nr probenr wert parameter
1 40 20,2 PARAM_1
2 40 0,15 PARAM_2
3 40 4,25 PARAM_3
4 50 18,9 PARAM_1
5 50 0,05 PARAM_2
6 50 6,15 PARAM_3Machen möchte ich (für einen Excelbericht) folgendes:
probenr wert_param_1 wert_param_2 wert_param_3
40 20,2 0,15 4,25
50 18,9 0,05 6,15also irgendwie ein halbes transponieren... Mache ich das mit JOIN, also erst mit SELECT über jeden Parameter und dann mit JOIN zusammen?
Ich sehe im Moment keinen sauberen Weg in SQL, nur Getrickse:
select
probennr,
max(wert_param_1),
max(wert_param_2),
max(wert_param_3)
from (
select
probennr,
wert as wert_param_1,
-99999 as wert_param_2,
-99999 as wert_param_3
from
tabelle
where
parameter='PARAM_1'
union
select
probennr,
-99999 as wert_param_1,
wert as wert_param_2,
-99999 as wert_param_3
from
tabelle
where
parameter='PARAM_2'
union
select
probennr,
-99999 as wert_param_1,
-99999 as wert_param_2,
wert as wert_param_3
from
tabelle
where
parameter='PARAM_3'
)
group by
probennr
(-99999 ist kleiner als alle möglichen Werte, ggf. anpassen.)
Alternative:
In Excel mit Makros oder Handarbeit die erste Form in die zweite bringen.
Alexander
Ich sehe im Moment keinen sauberen Weg in SQL, nur Getrickse:...
Vielen Dank für die Mühe, aber ich vergaß zu erwähnen, dass es sich nicht nur um 3 Parameter, sondern um ca. 80 handelt... damit wird das mit deiner Lösung recht viel Handarbeit in SQL, dann kann ich die Lösung auch gleich bei Excel suchen :(
riraru
Hallo,
du möchtest eine Kreuztabellenabfrage (aka PIVOT)! MS Access sollte dafür einen Assistenten haben und spätestens MS Excel hat definitiv einen.
Ciao, Frank
Hallo,
du möchtest eine Kreuztabellenabfrage (aka PIVOT)!...
Yippieh! Das wars, vielen vielen Dank!
riraru
Hat jemand eine Idee?
Das halte ich für einen klassischen Anwendungsfall für den Datenpilot bei OpenOffice bzw. Pivottabelle bei Excel.
Gruß
Kalk