phpbar.de logo

Mailinglisten-Archive

mySQL und Kreuztabellen
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

mySQL und Kreuztabellen



Hallo,

ich habe ein Tabelle KDUms

Jahr	Monat	KumUm
---------------------
1997    m01       199
1997    m03        49
1997    m12       128
1998    m05        59
1999    m01        10
1999    m02       129
2000    m04       499
2000    m06        12
2000    m10       102

Daraus möchte ich eine (temporäre) Tabelle in dieser Form erzeugen:

Jahr    m01    m02    m03    m04    m05    m06    m07    m08    m09    m10
m11    m12
----------------------------------------------------------------------------
------------
1997    199            49
128
1998                                 59
1999     10    129
2000                         499            12                         102

Früher gab es in Paradox eine Funktion "Kreuztabelle erzeugen", gibt es mit
mySQL eine
elegante Möglichkeit, diese Aufgabe lösen? In der Doku habe ich keine
Hinweise
gefunden.


Ich würde es mit meinem derzeitigen Kenntnisstand so lösen:

Schritt 1:
----------
create TEMPORARY table KdUmJahr1 (
  Jahr   INT(4)        UNSIGNED ZEROFILL   DEFAULT '0000' NOT NULL,
  m01    DOUBLE(16,2)                      DEFAULT '0.00',
  m02    DOUBLE(16,2)                      DEFAULT '0.00',
   .
   .
  m12    DOUBLE(16,2)                      DEFAULT '0.00')


Schritt 2:
----------
Insert INTO KumUmJahr
  select Jahr, KumUm, 0 as m02, 0 as m03, 0 as m04, 0 as m05, 0 as m06,
    0 as m07, 0 as m08, 0 as m09, 0 as m10, 0 as m11, 0 as m12 from KDUms
where Monat='m01';
Insert INTO KumUmJahr
  select Jahr, 0 as m01, KumUm, 0 as m03, 0 as m04, 0 as m05, 0 as m06,
    0 as m07, 0 as m08, 0 as m09, 0 as m10, 0 as m11, 0 as m12 from KDUms
where Monat='m02';
  .
  .
  .
Insert INTO KumUmJahr
  select Jahr, 0 as m01, 0 as m02, 0 as m03, 0 as m04, 0 as m05, 0 as m06,
    0 as m07, 0 as m08, 0 as m09, 0 as m10, 0 as m11, KumUm from KDUms where
Monat='m12';

Schritt 3:
----------
Create TEMPORARY Table KumUmJahr
select Jahr,
  sum(m01) as m01,
  sum(m02) as m02,
  sum(m03) as m03,
  .
  .
  .
  sum(m12) as m12
from KumUmJahr
group by Jahr


Muß ich mir auch in Zukunft die Finger wundtippen?? :-(
Oder geht das einfacher :-)

Mit freundlichen Grüßen
Harald

mailto:h.krause_(at)_calix.de


---
*** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql 


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive