MS-SQL: Zählen von Einträgen mit Aussortierung von doppelten Einträgen
Hallo. Gerade hat mir ein Kollege das Forum hier empfohlen, da er mir bei meinem Problem auch nicht recht helfen konnte. Vermutlich gibt es das Problem schon als Lösung, aber ich habe es leider nicht gefunden.
Also ich habe eine DB-Tabelle u.a. mit den Feldern ID und DATE.
Die ID wird täglich neu vergeben, so daß die ID 1 von gestern nicht die gleiche ist wie die ID 1 von heute.
Nun soll ich mit ner SQL-Abfrage die "distinct" IDs des letzten Monats zählen. Jedoch muss ich ja an sich nur die Distinct-IDs je Tag haben.
Bisher habe ich das hier:
SELECT COUNT(DISTINCT id) AS GesamtLetzterMonat
FROM tabelle
WHERE (MONTH(GETDATE()) = MONTH([date]) + 1)
Das wirft mir auch "ganz toll" die Anzahl aller "distinct" IDs raus. Nur hilft mir das ja nichts wenn eine ID an einem anderen Tag auch nochmal vorkommt und nicht mitgezählt wird.
Hat da jemand einen Plan? Jemand hat mir gesagt ich soll es mit folgendem versuchen:
SELECT COUNT(DISTINCT id, [date]) AS GesamtLetzterMonat
FROM tabelle
WHERE (MONTH(GETDATE()) = MONTH([date]) + 1)
Leider funktioniert das nicht. Zumindest bekomme ich immer nen Fehler vom MS-SQL Server.
Hilfe! *seufz*
Vielen Dank im Voraus.
Björn
Also ich habe eine DB-Tabelle u.a. mit den Feldern ID und DATE.
Die ID wird täglich neu vergeben, so daß die ID 1 von gestern nicht die gleiche ist wie die ID 1 von heute.
Nun soll ich mit ner SQL-Abfrage die "distinct" IDs des letzten Monats zählen. Jedoch muss ich ja an sich nur die Distinct-IDs je Tag haben.
Bisher habe ich das hier:
SELECT COUNT(DISTINCT id) AS GesamtLetzterMonat
FROM tabelle
WHERE (MONTH(GETDATE()) = MONTH([date]) + 1)
Das wirft mir auch "ganz toll" die Anzahl aller "distinct" IDs raus. Nur hilft mir das ja nichts wenn eine ID an einem anderen Tag auch nochmal vorkommt und nicht mitgezählt wird.
Hat da jemand einen Plan? Jemand hat mir gesagt ich soll es mit folgendem versuchen:
SELECT COUNT(DISTINCT id, [date]) AS GesamtLetzterMonat
FROM tabelle
WHERE (MONTH(GETDATE()) = MONTH([date]) + 1)
Leider funktioniert das nicht. Zumindest bekomme ich immer nen Fehler vom MS-SQL Server.
Hilfe! *seufz*
Vielen Dank im Voraus.
Björn
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 17164
Url: https://administrator.de/forum/ms-sql-zaehlen-von-eintraegen-mit-aussortierung-von-doppelten-eintraegen-17164.html
Ausgedruckt am: 23.12.2024 um 01:12 Uhr
6 Kommentare
Neuester Kommentar
Moin
Den Alias würde ich dann noch 'GesamtProTag' oder so nennen
Deine zweite Abfrage müsstest Du dann so umbauen:
womit wir dann praktisch bei meinem obigen Vorschlag sind.
hand/dba
SELECT day([date]), COUNT(DISTINCT id) AS GesamtLetzterMonat
FROM tabelle
WHERE (MONTH(GETDATE()) = MONTH([date]) + 1)
group by day([date])
Den Alias würde ich dann noch 'GesamtProTag' oder so nennen
Deine zweite Abfrage müsstest Du dann so umbauen:
SELECT [date], COUNT(DISTINCT id) AS GesamtLetzterMonat
FROM tabelle
WHERE (MONTH(GETDATE()) = MONTH([date]) + 1)
group by [date]
womit wir dann praktisch bei meinem obigen Vorschlag sind.
hand/dba
Moin Biber,
hast Du das ausprobiert? Mein SQL-Server meckert CONCAT an
Ich verwende zum Verketten eigentlich immer das '+'
hand/dba
hast Du das ausprobiert? Mein SQL-Server meckert CONCAT an
Ich verwende zum Verketten eigentlich immer das '+'
hand/dba
Hab's mal gerade umgebaut:
Kann sein, dass Björn auch genau diese Lösung sucht
(ist noch zu früh für mich)
hand/dba
SELECT COUNT(DISTINCT( convert(CHAR, id)+convert(CHAR, [date]))) As GesamtLetzterMonat
FROM tabelle
WHERE (MONTH(GETDATE()) = MONTH([date]) + 1)
Kann sein, dass Björn auch genau diese Lösung sucht
(ist noch zu früh für mich)
hand/dba