sql-query

01/04/2009 - 21:13 von Roman Töngi | Report spam
Ich habe folgende Tabellen und ihre Beziehungen:

SELECT p.desc, b1.date, b2.amount
FROM address a
INNER JOIN beleg1 b1
ON b1.address_id = a.id
INNER JOIN beleg2 b2
ON b2.beleg1_id = b1.id
INNER JOIN product p
ON p.beleg2_id = b2.id
WHERE a.id = 110
AND YEAR(b1.date) = 2009
AND MONTH(b1.date) = 10
GROUP BY p.desc, b1.date, b2.amount

Dies ergibt z.B. folgende Tabelle:

p.desc b1.date b2.amount
"bred" 2009/11/3 2.5
"bred" 2009/11/5 5
"bred" 2009/11/7 10.5
"apple" 2009/11/2 50
"apple" 2009/11/4 25
"apple" 2009/11/6 15
"apple" 2009/11/29 40
"pear" 2009/11/4 100
"pear" 2009/11/31 120


Ich möchte aber foldende Darstellung der Daten:


desc 1 2 3 4 5 6 7 ... 29 30 31

"bred" 2.5 5 10.5
"apple" 50 25 15 40
"pear" 100 120


Die Anzahl der Spalen (1, 2, 3, ...) sollte der eigentlichen Anzahl der Tage eines gegebenen Monats entsprechen.
Bsp: 30 für Novemer, 31 für Dezember und entweder 28 oder 29 für Februar, je nach Schaltjahr.


Ist dies möglich mit einer SQL-Abfrage?
Danke
 

Lesen sie die antworten

#1 Frank Kalis
02/04/2009 - 07:35 | Warnen spam
On 1 Apr., 21:13, Roman Töngi wrote:
Ich habe folgende Tabellen und ihre Beziehungen:

SELECT p.desc, b1.date, b2.amount
FROM address a
INNER JOIN beleg1 b1
    ON b1.address_id = a.id
    INNER JOIN beleg2 b2
       ON b2.beleg1_id = b1.id
       INNER JOIN product p
          ON p.beleg2_id = b2.id
WHERE a.id = 110
    AND YEAR(b1.date) = 2009
    AND MONTH(b1.date) = 10
GROUP BY p.desc, b1.date, b2.amount

Dies ergibt z.B. folgende Tabelle:

p.desc        b1.date        b2.amount
"bred"        2009/11/3    2.5
"bred"        2009/11/5    5
"bred"        2009/11/7    10.5
"apple"        2009/11/2    50
"apple"        2009/11/4    25
"apple"        2009/11/6    15
"apple"        2009/11/29    40
"pear"        2009/11/4    100
"pear"        2009/11/31    120

Ich möchte aber foldende Darstellung der Daten:

desc    1    2    3    4    5    6    7    ...    29    30    31

"bred"            2.5        5        10.5
"apple"        50        25        15            40
"pear"                100                            120

Die Anzahl der Spalen (1, 2, 3, ...) sollte der eigentlichen Anzahl der Tage eines gegebenen Monats entsprechen.
Bsp: 30 für Novemer, 31 für Dezember und entweder 28 oder 29 für Februar, je nach Schaltjahr.

Ist dies möglich mit einer SQL-Abfrage?



Möglich schon, ratsam nein. :-)

Die meisten Client haben ziemlich ausgefeilte Funktionen für diese
Kreuztabellen Darstellung. Da solltest du lieber ansetzen. Falls es
aber unbedingt auf dem Server passieren soll, schau dir das mal an:
http://www.sqlmag.com/articles/index.cfm?articleid608
Frank Kalis
Microsoft SQL Server MVP
Webmaster: http://www.insidesql.org

Ähnliche fragen