riraru: Sicht auf Tabelle

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

  1. 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

    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...

    1. Moin Moin!

      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...

      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

      --
      Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
  2. 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_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?

    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

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. 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

      1. 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

        1. Hallo,

          du möchtest eine Kreuztabellenabfrage (aka PIVOT)!...

          Yippieh! Das wars, vielen vielen Dank!

          riraru

  3. Hat jemand eine Idee?

    Das halte ich für einen klassischen Anwendungsfall für den Datenpilot bei OpenOffice bzw. Pivottabelle bei Excel.

    Gruß
    Kalk