Kreutzabellenabfrage

07/09/2007 - 08:42 von René Glauser | Report spam
hallo zusammen

Als Anfànger im Bereich SQL-Server versuche ich eine einfache
Kreuztabellen-Abrage auf einem SQL-Server 2005 Express zu erstellen, was mit
z.B. Access dank der grafischen Unterstützung kein Problem darstellt. Leider
kenne ich mich jedoch mit der SQL-Syntax noch nicht gut aus, und kriegs
deshalb einfach nicht auf die Reihe.

In der Hoffnung, dass mir jemand helfen kann, poste ich nachfolgend die
SQL-Ansicht aus Access 2007:

TRANSFORM Count(Lieferscheine.ANZAHL) AS AnzahlvonANZAHL
SELECT Lieferscheine.LS_NR
FROM Lieferscheine
WHERE (((Lieferscheine.REPARATUR)='JA'))
GROUP BY Lieferscheine.LS_NR, Lieferscheine.REPARATUR
ORDER BY Lieferscheine.LS_NR
PIVOT Lieferscheine.ARTNR;

Mein Ziel wàre,
die analoge Abfrage auf einem SQL-Server mittels PIVOT-Statement zu
generieren.

Kennt sich da jemand aus?

Bin für jede Hilfe sehr dankbar.

Lieber Gruss
René
 

Lesen sie die antworten

#1 Gerald Aichholzer
07/09/2007 - 09:18 | Warnen spam
Hallo René,

René Glauser wrote:
Als Anfànger im Bereich SQL-Server versuche ich eine einfache
Kreuztabellen-Abrage auf einem SQL-Server 2005 Express zu erstellen, was mit
z.B. Access dank der grafischen Unterstützung kein Problem darstellt. Leider
kenne ich mich jedoch mit der SQL-Syntax noch nicht gut aus, und kriegs
deshalb einfach nicht auf die Reihe.

In der Hoffnung, dass mir jemand helfen kann, poste ich nachfolgend die
SQL-Ansicht aus Access 2007:

TRANSFORM Count(Lieferscheine.ANZAHL) AS AnzahlvonANZAHL
SELECT Lieferscheine.LS_NR
FROM Lieferscheine
WHERE (((Lieferscheine.REPARATUR)='JA'))
GROUP BY Lieferscheine.LS_NR, Lieferscheine.REPARATUR
ORDER BY Lieferscheine.LS_NR
PIVOT Lieferscheine.ARTNR;

Mein Ziel wàre,
die analoge Abfrage auf einem SQL-Server mittels PIVOT-Statement zu
generieren.



der große Unterschied zwischen Microsoft Access und SQL Server ist,
dass man beim SQL Server alle möglichen Spalten _explizit_ auflisten
muss (Microsoft Access ermittelt dagegen die auftretenden Spalten
dynamisch).

In deinem Fall würde es in etwa so aussehen (ohne Garantie auf
Korrektheit):

SELECT LS_NR, [ArtNr1], [ArtNr2], ..., [ArtNrN]
FROM Lieferscheine
WHERE REPARATUR = 'JA'
PIVOT (
COUNT(ANZAHL)
FOR ARTNR IN ( [ArtNr1], [ArtNr2], ..., [ArtNrN] )
) AS pvt
ORDER BY LS_NR

lg,
Gerald

Ähnliche fragen