![]() |
Datenbank: SQL Server 2005 • Version: 2005 STD • Zugriff über: ADO
Select Datepart mit Sortierung
Hi,
hab folgendes Thema: Mache einen Select mit
SQL-Code:
Ergebniss:(nur Ausschnitt )
SELECT TOP (100) PERCENT CONVERT(CHAR(4), DATEPART(yyyy, Stoer_Zeit)) + ' ' + CONVERT(CHAR(2), DATEPART(wk, Stoer_Zeit)) AS Jahr_KW,
COUNT(Kennummer) AS Einträge, SUM(Prod_min) AS Prod, SUM(PM_min) AS PM, SUM(Prod_min + PM_min) AS PROD_PM, MAX(Prod_min + PM_min) AS Prod_PM_MAX_KW FROM dbo.Aktionsdaten GROUP BY CONVERT(CHAR(4), DATEPART(yyyy, Stoer_Zeit)) + ' ' + CONVERT(CHAR(2), DATEPART(wk, Stoer_Zeit)) ORDER BY Jahr_KW 2002 19 40 1300 1365 2665 330 2002 2 25 1030 1605 2635 720 2002 20 76 1981 3256 5237 480 ... 2002 39 55 1842 2800 4642 620 2002 4 50 2399 2810 5209 600 2002 40 36 4412 1747 6159 4200 Nun ist das Problem das die Jahr KW nicht stimmen vom Ablauf her. Normal muss die KW. 2 ganz oben kommen. Hat jemand eine Idee? Danke. |
Re: Select Datepart mit Sortierung
Hallo René,
entweder du verbaust die KW zweistellig mit evtl. führender Null oder du sortierst nach Jahr und KW getrennt und numerisch. Grüße vom marabu |
Re: Select Datepart mit Sortierung
Hi,
also: Wenn ich es mit der Führenden 0 mache wie muss ich es dann machen das ich im SQL String bfragen kann ob 1 oder 2 Stellig und jenachdem dann eine0davor? Oder Das Jahr mit Convert bekomme ich als Char zurück wie kann ich es als Zahl zurückbekommen? Danke. |
Re: Select Datepart mit Sortierung
Zum einen liefert dir DatePart() einen Integer-Wert. Erst durch Convert() erzeugst du daraus einen String. Zum anderen kannst du einen String KW mit führenden Nullen ausstatten indem du ihm die gewünschte Zahl an Nullen voranstellst und dann die gewünschte Länge am Ende wieder wegnimmst:
SQL-Code:
marabu
Right('00' + KW, 2)
|
Re: Select Datepart mit Sortierung
Hi marabu,
Also ich glaub isteh grad kräftig auf der Leitung . Hab es nun so gemacht.
SQL-Code:
Result:
SELECT TOP (100) PERCENT CONVERT(CHAR(4), DATEPART(yyyy, Stoer_Zeit)) + ' ' + CONVERT(CHAR(2), DATEPART(wk, Stoer_Zeit)) AS Jahr_KW,
RIGHT('00' + CONVERT(CHAR(2), DATEPART(wk, Stoer_Zeit)), 2) AS KW FROM dbo.Aktionsdaten ORDER BY Jahr_KW 2002 1 # 1 2002 10 # 10 I blick grad net mehr durch. danke |
Re: Select Datepart mit Sortierung
Hi,
ich habe es eben mal so versucht ...
SQL-Code:
Test:SELECT TOP 100 PERCENT CAST( DATEPART(yyyy, Stoer_Zeit) AS CHAR(4) ) + ' ' + RIGHT('00' + CAST( DATEPART( WEEK, Stoer_Zeit ) AS VARCHAR(2) ) ,2) AS Jahr_KW FROM dbo.Aktionsdaten ORDER BY CAST( DATEPART(yyyy, Stoer_Zeit) AS CHAR(4) ) + ' ' + RIGHT('00' + CAST( DATEPART( WEEK, Stoer_Zeit ) AS VARCHAR(2) ) ,2)
SQL-Code:
Ausgabe:
DECLATE @D DATETIME
SET @D = CAST('1.1.2004' AS DATETIME) SELECT CAST( DATEPART( YEAR, @D ) AS CHAR(4) ) + ' ' + RIGHT('00'+CAST (DATEPART (WEEK,@D) AS VARCHAR(2) ) ,2)
SQL-Code:
Scheint also zu funktionieren.
2004 01
Dein Fehler ist, das
SQL-Code:
auch bei einstelligen Tagen 2 Zeichen lang ist. Somit ergibt
CONVERT(CHAR(2), DATEPART(wk, Stoer_Zeit)), 2)
SQL-Code:
immer
RIGHT ( '00' + CONVERT(CHAR(2), DATEPART(wk, Stoer_Zeit)), 2) )
SQL-Code:
Bei Einstelligen Tagen wäre das Ergebins also "2003 2 ".
CONVERT(CHAR(2), DATEPART(wk, Stoer_Zeit)), 2)
Schreibe dir am besten eine kleine UDF, damit die Abfragen nicht unübersichtlich werden.
SQL-Code:
Aufruf:
CREATE FUNCTION GetYearKw (
@Date DATETIME ) RETURNS VARCHAR(7) AS BEGIN -- Gibt das Jahr und die KW von @Date im Format "2004 15" zurück DECLARE @Res VARCHAR(7) SELECT @Res = CAST( DATEPART( YEAR, @Date ) AS CHAR(4) ) + ' ' + RIGHT('00'+CAST (DATEPART (WEEK,@Date) AS VARCHAR(2) ) ,2) RETURN @Res END
SQL-Code:
Schöne Grüße,
SELECT TOP 100 PERCENT
dbo.GetYearKw(Stoer_Zeit) AS Jahr_KW FROM dbo.Aktionsdaten ORDER BY dbo.GetYearKw(Stoer_Zeit) Jens :hi: |
Re: Select Datepart mit Sortierung
Hi Jens,
Wow bin platt. Vielen Dank. Da muss i wohl noch einiges Lernen in bezug auf SQL. Werd es sofort mal testen und die UDF auch natürlich,das ist echt eine riesen Erleichterung. Vielen Vielen Dank. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:20 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 by Thomas Breitkreuz