Matrixx Geschrieben 13. Februar 2004 Teilen Geschrieben 13. Februar 2004 Hallo, ich möchte eine Übersicht von Zugriffen verschiedener Kunden nach Monaten auswerten. Ich habe in meiner DB folgende Tabellen: shoplogin: uid | kundenname | username | passwort shopzugriff: uid | zugriffsdatum Ich möchte jetzt eine Webseite generieren mit der ich alle Kunden auswerten möchte: Kunde: xyz ------------ Monat | Anzahl Zugriffe ------------------------------------------ januar 2004 33 ... Kunde abc -------------------- Monat | Anzahl Zugriffe ------------------------------------------ januar 2004 66 ... Ich habe es aber nicht geschafft eine solche Struktur zu bekommen. Möchte dies dann mit ASP generieren. Bitte um Hilfe!! Gruss Dirk Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
just_me Geschrieben 13. Februar 2004 Teilen Geschrieben 13. Februar 2004 Wenn du eine Tabelle haben willst, welche die Daten für eine eigene Formatierung sammelt, dann versuch's mal mit:-- temporäre Tabelle als Übersicht SELECT sl.[kundenname], (SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 1 AND sl.uid = uid) AS [Januar], (SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 2 AND sl.uid = uid) AS [Februar], (SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 3 AND sl.uid = uid) AS [März], (SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 4 AND sl.uid = uid) AS [April], (SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 5 AND sl.uid = uid) AS [Mai], (SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 6 AND sl.uid = uid) AS [Juni], (SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 7 AND sl.uid = uid) AS [Juli], (SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 8 AND sl.uid = uid) AS [August], (SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 9 AND sl.uid = uid) AS [September], (SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 10 AND sl.uid = uid) AS [Oktober], (SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 11 AND sl.uid = uid) AS [November], (SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = 12 AND sl.uid = uid) AS [Dezember], (SELECT COUNT(zugriffsdatum) FROM shopzugriff WHERE sl.uid = uid) AS [Gesamt] FROM shoplogin AS sl -- Wenn das Jahr uninteressant ist, können alle Zeilen ab hier entfernt werden INNER JOIN shopzugriff AS sz ON sl.uid = sz.uid WHERE DATEPART(year, sz.zugriffsdatum) = 2004 -- das Jahr kann geändert werden Die von dir gewünschte Ausgabe kann mit dem folgenden script erreicht werden:DECLARE @kundenname VARCHAR(25) DECLARE @uid INT DECLARE @count INT DECLARE @datum DATETIME DECLARE @jahr INT SET @jahr = 2004 -- !!! hier das gewünschte Jahr eintragen !!! DECLARE kunden CURSOR SCROLL FOR SELECT uid, kundenname FROM shoplogin OPEN kunden FETCH NEXT FROM kunden INTO @uid, @kundenname SET @datum = '01/01/'+CAST(@jahr AS char(4)) WHILE @@FETCH_STATUS = 0 BEGIN SELECT @count = COUNT(zugriffsdatum) FROM shopzugriff WHERE DATEPART(month, zugriffsdatum) = DATEPART(month, @datum) AND DATEPART(year, zugriffsdatum) = DATEPART(year, @datum) AND uid = @uid --IF @count > 0 -- !!! diese Zeile aktivieren, wenn nur Ausgaben für Zugriffe interessant sind !!! BEGIN PRINT '' PRINT '' PRINT 'Kunde: ' + @kundenname PRINT '------------------' PRINT '' PRINT 'Monat | Anzahl Zugriffe' PRINT '-----------------------' PRINT DATENAME(month, @datum) + ' ' + DATENAME(year, @datum) + ' ' + CAST(@count AS varchar(10)) END FETCH NEXT FROM kunden INTO @uid, @kundenname IF @@FETCH_STATUS <> 0 BEGIN SET @datum = DATEADD(month, 1, @datum) IF DATEPART(year, @datum) <> @jahr BEGIN BREAK END FETCH FIRST FROM kunden INTO @uid, @kundenname END END CLOSE kunden DEALLOCATE kunden IN NO EVENT SHALL just_me BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF SCRIPTS, DOCUMENTS, PROVISION OF OR FAILURE TO PROVIDE SERVICES, OR INFORMATION AVAILABLE FROM HIM. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.