![]() |
Datenbank: MS SQL Server • Version: 2000 • Zugriff über: Über Domäne auf Win 2003 Server SBS
Zählen in SQL
Hallo, ich habe folgende Abfrage (es handelt sich um eine Ersatzteilverwaltung):
SQL-Code:
So, das funktioniert soweit ganz gut, nur wie kann ich die Vorkommnisse im
SELECT * FROM Buchungen WHERE PartDatum BETWEEN '06.10.2005' AND '08.10.2005'
AND PartNr = '10193722' AND PartStatus = 'Abbuchung' Ergebnis, welches durch diese Abfrage entsteht zählen? Also, wenn mir die SQL-Ausgabe beispielsweise 10 Ergebnisse/Vorkommnisse anzeigt, das ich ermitteln kann, das es wirklich sind? Ich habe gehört, das es mit dem Befehl
SQL-Code:
gehen soll,
COUNT
doch egal wo ich diesen Befehl in der o.a. Abfrage eingefügt habe, gab es einen Fehler seitens meines SQL-Servers. Ich hoffe ihr könnt mir helfen. Viele Grüße aus Hamburg... |
Re: Zählen in SQL
Hallo.
In SQL kannst du COUNT(*) anstatt * verwenden, beim Arbeiten mit einer Query (ADO) hilft dir die Eigenschaft RowsAffected weiter. Grüße vom marabu PS: bei den Metadaten zu deinem thread erwarten wir bei "Zugriff über" die Angabe des Komponenten-Sets, mit dem du arbeiten möchtest... |
Re: Zählen in SQL
Super! Vielen Dank, jetzt funktioniert es! :thumb:
Aber: Da mehrere Buchungen an einem Tag für die gleiche Ersatzteilnr. vorkommen, gibt es da die Möglichkeit, das Ergebnis so darzustellen, das ich in der 1. Spalte die einzelne Ersatzteilnr. habe, und in der zweiten Spalte den errechneten/gezählten Wert? Beispielsweise in einem Grid oder TListView? Das heißt, das in der Ausgabe nur einmal die Nummer vorkommt, aber die Abbuchungen gezählt werden und hinter (in der nächsten Spalte) der Nummer der Wert steht??? Gibt es eigentlich eine Art Befehlsreferenz für SQL im Internet oder als eBook? Quasi kostenlos? :gruebel: Bezüglich der Metadaten: Tut mir leid, das wusste ich nicht :shock: , werde ich aber in Zukunft berücksichtigen! :) |
Re: Zählen in SQL
Zitat:
![]() aber immer bedenken, bei SQL gibt es Basis-Funktionen und dann auch noch Dialekt, will heissen, was auf Server/Datenbank von Hersteller A funktioniert, muss nicht unbedingt bei Hersteller B auch laufen. Beispiel: Bei MySQL gibt es den Befehl REPLACE (genialer Befehl, der arbeitet wie ein INSERT wenn die Zeile nicht existiert (laut Primärschlüssel) und wie UPDATE wenn die Zeile schon existiert). Oder: Zum Lesen der ersten 100 Zeilen heisst es bei MS-SQL "SELECT TOP 100 * FROM table;" bei MySQL "SELECT * FROM table LIMIT 100;" Aber da man beim Start in die SQL-Welt sich erst mal für ein Datenbank-System entscheided sind die Unterschiede erst mal nicht so entscheidend, allerdings die Doku sollte zu dem DB-System passen :wink: cu |
Re: Zählen in SQL
Hallo Sebastian,
du kannst eine statistische Auswertung über die SQL Aggregat-Funktionen erstellen. Mit dem folgenden Statement erhältst du eine Übersicht der Artikelabgänge in einem bestimmten Zeitraum. Die Ausdrücke mit dem Doppelpunkt sind Parameter, die du in deinem Programm ersetzen kannst - so ist das Statement variabel einsetzbar.
SQL-Code:
Zum MS SQL Server 2000 gehört eine Online Dokumentation, in der du die Referenz für T-SQL findest - das ist die SQL Implementierung von MS (Sybase).
SELECT PartNr, Count(*) as Anzahl, Sum(Wert) as Wert
FROM Buchungen WHERE PartDatum BETWEEN :begin AND :end AND PartStatus = :status GROUP BY PartNr ORDER BY PartNr Grüße vom marabu |
Re: Zählen in SQL
@marabu
In allen mir bekannten DBMS führt
SQL-Code:
automatisch zu einer Sortierung.
group by
Also wäre ein zusätzlicher Aufruf von
SQL-Code:
sinnlos und verschwendet nur Prozessorzeit.
order by
Ich kenn natürlich nicht alle Systeme, also selber ausprobieren :wink: |
Re: Zählen in SQL
Zitat:
|
Re: Zählen in SQL
Zitat:
Was genau meinst Du mit "Anzahl" und was mit "Wert"??? Das sind Typen/Spalten, die ich in meiner Tabelle doch gar nicht habe... Oder bringe ich da jetzt was durcheinander??? |
Re: Zählen in SQL
Lege das bitte nicht auf die Goldwaage - ich wollte dir nur möglichst viel in einem einzigen Statement zeigen. "Anzahl" ist ja nur eine Umbenennung und wenn es "Wert" bei dir nicht gibt, dann schmeiß es einfach wieder raus. Hauptsache du hast jetzt eine Idee, wie du weiter machen kannst.
Freundliche Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz