Autor Beitrag
KidPaddle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 351

WinXP,Linux
D7 Prof, XE7
BeitragVerfasst: Mo 22.05.06 15:23 
Hallo,

ich möchte in einem SQL anhand der Kalenderwoche eines Datum gruppieren, z. B.:
ausblenden SQL-Anweisung
1:
2:
3:
4:
SELECT ISOWEEK(MEINDATUM) AS KW, COUNT(*) AS ANZAHL 
FROM DUMMY 
GROUP BY ISOWEEK(MEINDATUM)
ORDER BY ISOWEEK(MEINDATUM) DESC


Die eingebaut Funktion DATENAME(WEEK, MEINDATUM) ist leider nicht brauchbar, da es mir bei einigen Daten eine KW 53 ausgibt und diese Funktion von Sonntag bis Samstag und nicht von Monat bis Sonntag arbeitet.

Habe auch schon eine Stored Procedure, ISOWeek, gefunden, jedoch brauch ich die Funktion in einem SQL - Befehl und das geht mit Stored Proceduren nicht.

Der MS SQL Server 2000 ist Pflicht, ein Wechsel auf eine andere Datenbank ist nicht möglich. Kann mir jemand eine Lösung für dies Problem geben.

Gruß
Thomas
espen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 90
Erhaltene Danke: 1


D6 Prof./D7 Prof. MSSQL, MySQL
BeitragVerfasst: Di 23.05.06 13:38 
Hallo,
hast Du es auch schon mit
ausblenden SQL-Anweisung
1:
SELECT DATEPART(week, GETDATE())					

probiert ?
Ggf. hilft Dir bei "falschen" Wochenangaben
ausblenden SQL-Anweisung
1:
2:
SET DATEFIRST(...) 
SELECT @@DATEFIRST

weiter.

Grüßle.
KidPaddle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 351

WinXP,Linux
D7 Prof, XE7
BeitragVerfasst: Mi 24.05.06 16:41 
ausblenden SQL-Anweisung
1:
SELECT DATEPART(week, GETDATE())					


Ja, das habe ich schon probiert, aber es hilft mir leider nicht weiter. Viele Dank für deine Antwort, aber bisher habe ich noch keine zufriedenstellende Lösung gefunden. Kann man nicht im SQL Server eine Funktion schreiben und dann innerhalb eines SQL - Befehles aufrufen? Ich habe nichts gefunden.

Gruß
Thomas
espen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 90
Erhaltene Danke: 1


D6 Prof./D7 Prof. MSSQL, MySQL
BeitragVerfasst: Fr 26.05.06 10:52 
Hallo,

ich weiss nicht, ob ich Dich richtig verstehe.
Du kannst natürlich eine User-Defined erstellen (Hier ein Beispiel mit "komischem" Datepart)

ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
CREATE FUNCTION fn_WeekOf(@aDate DateTime)
RETURNS int
AS
BEGIN
   RETURN (SELECT DATEPART(week,@aDate))
END


In Deiner Abfrage kannst Du dann die Ergebnisse der Funktion mit
ausblenden SQL-Anweisung
1:
select dbo.fn_Weekof(getdate())					

ermitteln.

Gruss,
KidPaddle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 351

WinXP,Linux
D7 Prof, XE7
BeitragVerfasst: Fr 26.05.06 14:53 
Danke, das wars. Hatte immer versucht das unter Stored Proceduren anzulegen, aber es gehörte nur in "Benutzer Definierte Funktionen" und schon ging es so wie ich es mir vorgestellt habe.

Vielen Dank.
Thomas