MS SQL Script - Abfragehilfe

Matze7

Mitglied
Hallo,

leider habe ich von SQL fast keine Ahnung, muss mich damit aber nun beschäftigen.

Ich habe ein kleines Problem, wo ich als Neuling noch nicht so recht durchschaue, vielleicht können die Profis da helfen?

Ich möchte per SQL Script (geht leider nicht anders) eine Abfrage an die Datenbank senden und danach ein Ergebnis ausgeben können. Benutzt wird eine MS SQL 2000 Datenbank.
Zunächst muss ich hier glaube einen View erstellen? Das Script müsste glaube so in etwa aussehen?

CREATE VIEW dbo.NamederAbfrage
AS
SELECT Daten?
FROM dbo.tblBeispiel
WHERE (???)
GO

Ich habe einen Screenshot einer Beispieltabelle (tblBeispiel) mit angehangen, die die Tabelle darstellt.

Ich möchte nun folgendes erreichen:

Durch Aufruf des Scripts soll mir die Abfrage alle Einträge in der Spalte Daten von der Anzahl zählen, die in einen bestimmten Zeitraum fallen. Z.B. möchte ich die Gesamtanzahl, die im Monat Mai (also vom 01.05.2014 - 31.05.2014) gemacht wurden zusammengezählt haben und angezeigt bekommen. (In der Beispieldatenbank wären das 5, für den Monat Juni wären es dann 6) Die Daten die in der Spate Daten stehen kann man sich z.B. auch als erledigte Aufgaben vorstellen. Ich möchte also wissen, wie viele erledigte Aufgaben ein Mitarbeiter im entsprechenden Zeitraum erledigt hat

Vielleicht wäre es noch möglich, diese für jeden Mitarbeiter getrennt an zu zeigen? Also Mitarbeiter 1 hat im angegebenen Zeitraum (z.B. Juni) 1 Aufgabe erledigt, Mitarbeiter 4 dagegen 2 Aufgaben. Die Tabelle ist natürlich noch deutlich länger. Es soll also eine Zählung der erledigten Aufgaben für jeden Mitarbeiter einzeln in einem bestimmten Zeitraum angezeigt werden, bzw. die Gesamtanzahl aller Mitarbeiter im Zeitraum. Zur Not könnte ich auch 2 Scripte nehmen, wenn sowas vielleicht nicht zusammen anzeigbar ist? Also eins für alle gesamt, wo nur die Anzahl in einem bestimmten Zeitraum addiert und ausgegeben wird und eins auf Mitarbeiter aufgeschlüsselt.

Leider hab ich als Neuling nicht so recht Ahnung, was ich oben im Script bei den Fragezeichen schreiben muss, um dieses Ergebnis zu erhalten. Hat hier vielleicht jemand nen Tipp? DANKE!
 

Anhänge

  • Beispiel.JPG
    Beispiel.JPG
    28,8 KB · Aufrufe: 4
Hi

SQL:
SELECT Bearbeiter, COUNT(Daten)
FROM dbo.tblBeispiel
WHERE MONTH(Datum)=5 AND YEAR(Datum)=2014
GROUP BY Bearbeiter
Ich "denke" zumindest (nach kurzer Googlesuche), dass es auch in MSSQL2000 so gehn sollte
 
Hmmm, Danke erstmal... Kann das jemand bestätigen, das sowas auch bei MS SQL 2000 funktionieren würde?

Ich muss also gar kein Create View machen, um sowas angezeigt zu bekommen? Einfach den Text oben in eine Textdatei mit Endung .sql und die Sache würde einfach angezeigt?
Muss da nicht am Ende Go stehen? Sorry, bin halt noch Newbie...
 
Warum probierst du es nicht einfach? Kaputt wird adurch sicher nichts.
Ob sich hier noch wer mit Version 2000 findet...die ist eben von 2000 und hoffnungslos veraltet.
Seitdem sind 7 neue Versionen des Programms erschienen.

Eine View ist nicht nötig. Kann man machen und macht manche Abfragen einfacher, aber nicht die hier.
Das Go hängt davon ab, wo das Ganze eingegeben wird.
Eine Textdatei allein wird nicht reichen (woher soll das Programm denn wissen, dass da eine Textdatei
abzuarbeiten ist?) (bzw. sollte es etwas zum Eingeben geben, ohne dafür Dateien zu erstellen).
 
Hmmm, ist schwierig zu erklären... Ich habe die Möglichkeit eine .sql Script Datei aus zu führen, nur bin ich da nicht direkt auf dem Server der Datenbank, sondern an einem Client, auf dem eine Software (Access VBA mit Verlinkung zur Datenbank) läuft. Ich werde es morgen mal versuchen zu testen, mal schauen, ob ich da was angezeigt bekomme. Leider ist die SQL Version recht alt, aber eine Neuanpassung wurde wohl Aufgrund der hohen Anpassungskosten bisher gescheut, bzw. ist an sich auch nicht unbedingt nötig.

Wenn ich z.B. ein SQL Script mit Create View ausführe, bekomme ich auch was angezeigt.
 
Wenn du schon vorher erfolgreich Abfragen gemacht hast, machs doch einfach mit der genauso.
Wenns aus irgendeinem Grund mit View besser geht dann eben vorne
ein "CREATE VIEW dbo.NamederAbfrage AS" dazu und/oder hinten ein "GO".
 
So sieht z.B. eine funktionierende Script Datei / Abfrage aus:
Danach ist auch die entsprechende qry im System / Datenbank abgelegt und kann von mir über den Client aufgerufen werden.

CREATE VIEW dbo.qryAbfrage
AS
SELECT Daten
FROM dbo.tblBeispiel
WHERE (Daten LIKE '%[a-z]%') AND (Datum >= CONVERT(DATETIME, '2001-01-01 00:00:00', 102))
GO

Hierbei wird eine Abfrage gestartet, bei der z.B. in der Spalte Daten nach Inhalten mit Buchstaben von A-Z gesucht wird mit einem Datum älter als 2001. Ich habe die Namen der Tabellen / Spalten Bespielhaft benannt.
Vielleicht müsste ich das Ganze nur auf Alt ummodeln?
 
Ok, werde mal die "moderne" Form von dir morgen versuchen, vielleicht klappt es ja bereits. Ansonsten muss ich mal sehen, wie ich das ins alte Format ummodeln kann, das er es nimmt.
DANKE!
 
Ach so, die Datum-Spalte ist kein Datum, sondern ein String.
...gleich kommt eine abgeänderte Version:
SQL:
CREATE VIEW dbo.qryAbfrage
AS
SELECT Bearbeiter, COUNT(Daten)
FROM dbo.tblBeispiel
WHERE (Datum >= CONVERT(DATETIME, '2014-05-01 00:00:00', 102))
AND (Datum < CONVERT(DATETIME, '2014-06-01 00:00:00', 102))
GROUP BY Bearbeiter
GO
 
Ah, Danke!!! Werde es morgen mal testen...

Wenn ich die Abfrage erneut mit anderem Datum ausführen möchte, dann muss ich am Anfang nicht CREATE VIEW, sondern ALTER VIEW schreiben, richtig?
 
Zurück