Jump to content

tutter

Members
  • Gesamte Inhalte

    75
  • Registriert seit

  • Letzter Besuch

Fortschritt von tutter

Fellow

Fellow (7/14)

  • Erste Antwort
  • Engagiert
  • Erster eigener Beitrag
  • Eine Woche dabei
  • Einen Monat dabei

Neueste Abzeichen

0

Reputation in der Community

  1. alles bestens genau das war der Fehler! danke dir!
  2. Hallo an alle, ich habe ein kleines Syntax Problem. Habe mich daran irgendwie festgebissen und bräuchte eure Hilfe. declare @x int= 1 declare @y int= 1 while @y <=16 Begin while @x <= 16 Begin print 'Zaehler'+str(@y)+'_'+str(@x) SET @x = @x + 1 ENd SET @y = @y + 1 END Ziel ist es von Zaehler 1 _1 bis Zaehler 16_16 zu durchlaufen. Jedoch bekomme ich @y nicht erhöht
  3. Morgen an alle, ich möchte aus 2 Parametern ein Date machen declare @Jahr char declare @Monat char set @Jahr = '2014' set @Monat = '12' Mit Convert sollte das möglich sein aber ich habe irgendwie immer wieder einen Fehler drin convert(datetime,cast('24.12.'+@Jahr as char) ,104) as zeit hab es hinbekommen! wenn noch jemand eine andere Lösung weiß würde ich die gern wissen ,convert(datetime,cast('24'+'.'+cast(@Monat as char(2))+'.'+cast(@Jahr as CHAR(4)) as CHAR(10)),104)
  4. tutter

    Subselect counten

    Hallo Jungs ich habe ein Problem und ich hoffe ihr könnt helfen: SELECT --count (*) as System_Zugriffe_Monat_NB * FROM( SELECT SUBSTRING([Ev_Station],1,2) as System_Typ FROM [TEST].[dbo].[EVENTHISTORY] WHERE CAST(substring(CONVERT(varchar(10),[Ev_Time],101),1,2) as numeric) = @paraMonat and cast(substring(CONVERT(varchar(10),[Ev_Time],101),7,4) as numeric) = @paraJahr and Ev_User !='Unbestimmter Benutzer' and Ev_User != 'Guest' --and SUBSTRING([Ev_Station],1,2)='NB' group by [Ev_User],[Ev_Station],SUBSTRING([Ev_Station],1,2) ) AS z der Subselect kann nun entweder die Zeichenkette NB oder PC zurückliefern. Ich würde ja gern beide Unterscheiden mit einer Case Anweisung und dann zählen. Dazu bräuchte ich eine weitere subselect aber ich bekomme das einfach nicht auf die reihe. kann mir jemand zeigen wie das geht mit einer weiteren subselect?
  5. achso! jetzt sind wir beieinander Ziel ist stets die Differenz vom Vormonat zum aktuellen Monat auszurechnen. Dabei sind die Werte aus den jeweiligen Zählern(wie der Name schon sagt *G*) zu verwenden. Das klappt auch alles bestens. Jedoch ist eben das Skript zu lang um den Source in ein DTSX Paket zu packen. wie schon geschrieben gehe ich von einer Begrenzung an Zeichen aus. Somit entsteht für mich die Notwendigkeit diese Abfrage so zu gestalten das sie einfach stur kürzer ist. ;) Ich wird mal meinen Abend opfern und mir Skalarwertfunktion anschauen. Jedoch wäre mir auch an einer Lösung gelegen die meinen jetzigen Stand bzw. Herangehensweise umsetzen könnte. Muss doch machbar sein! die While-Schleife steht doch schon!
  6. ich dachte das sei jetzt klar aber ok dann noch ein paar Details. SELECT [CounterID] ,[Datum] ,cast(substring(CONVERT(varchar(10),[Datum],101),7,4) as numeric) as Jahr ,cast(substring(CONVERT(varchar(10),[Datum],101),4,2) as numeric) as Tag ,cast(substring(CONVERT(varchar(10),[Datum],101),1,2) as numeric) as Monat ,[Zaehler_1K1_1] ,[Zaehler_1K1_1]-(SELECT TOP 1 [Zaehler_1K1_1] FROM [SKEMS-HST-POWER].[dbo].[EnergieMonat] AS t2 WHERE (t2.[Zaehler_1K1_1] < t1.[Zaehler_1K1_1]) OR((t2.[Zaehler_1K1_1] = t1.[Zaehler_1K1_1]) AND (t1.[CounterID] > t2.[CounterID])) ORDER BY [Zaehler_1K1_1] DESC, [CounterID]) AS [Zaehler_1K1_1-Differenz] ,[Zaehler_1K1_2] ,[Zaehler_1K1_2]-(SELECT TOP 1 [Zaehler_1K1_2] FROM [SKEMS-HST-POWER].[dbo].[EnergieMonat] AS t2 WHERE (t2.[Zaehler_1K1_2] < t1.[Zaehler_1K1_2]) OR((t2.[Zaehler_1K1_2] = t1.[Zaehler_1K1_2]) AND (t1.[CounterID] > t2.[CounterID])) ORDER BY [Zaehler_1K1_2] DESC, [CounterID]) AS [Zaehler_1K1_2-Differenz] ,[Zaehler_1K1_3] ,[Zaehler_1K1_3]-(SELECT TOP 1 [Zaehler_1K1_3] FROM [SKEMS-HST-POWER].[dbo].[EnergieMonat] AS t2 WHERE (t2.[Zaehler_1K1_3] < t1.[Zaehler_1K1_3]) OR((t2.[Zaehler_1K1_3] = t1.[Zaehler_1K1_3]) AND (t1.[CounterID] > t2.[CounterID])) ORDER BY [Zaehler_1K1_3] DESC, [CounterID]) AS [Zaehler_1K1_3-Differenz] ,[Zaehler_1K1_4] ,[Zaehler_1K1_4]-(SELECT TOP 1 [Zaehler_1K1_4] FROM [SKEMS-HST-POWER].[dbo].[EnergieMonat] AS t2 WHERE (t2.[Zaehler_1K1_4] < t1.[Zaehler_1K1_4]) OR((t2.[Zaehler_1K1_4] = t1.[Zaehler_1K1_4]) AND (t1.[CounterID] > t2.[CounterID])) ORDER BY [Zaehler_1K1_4] DESC, [CounterID]) AS [Zaehler_1K1_4-Differenz] ,[Zaehler_1K1_5] ,[Zaehler_1K1_5]-(SELECT TOP 1 [Zaehler_1K1_5] FROM [SKEMS-HST-POWER].[dbo].[EnergieMonat] AS t2 WHERE (t2.[Zaehler_1K1_5] < t1.[Zaehler_1K1_5]) OR((t2.[Zaehler_1K1_5] = t1.[Zaehler_1K1_5]) AND (t1.[CounterID] > t2.[CounterID])) ORDER BY [Zaehler_1K1_5] DESC, [CounterID]) AS [Zaehler_1K1_5-Differenz] ,[Zaehler_1K1_6] ,[Zaehler_1K1_6]-(SELECT TOP 1 [Zaehler_1K1_6] FROM [SKEMS-HST-POWER].[dbo].[EnergieMonat] AS t2 WHERE (t2.[Zaehler_1K1_6] < t1.[Zaehler_1K1_6]) OR((t2.[Zaehler_1K1_6] = t1.[Zaehler_1K1_6]) AND (t1.[CounterID] > t2.[CounterID])) ORDER BY [Zaehler_1K1_6] DESC, [CounterID]) AS [Zaehler_1K1_6-Differenz] ,[Zaehler_1K1_7] ,[Zaehler_1K1_7]-(SELECT TOP 1 [Zaehler_1K1_7] FROM [SKEMS-HST-POWER].[dbo].[EnergieMonat] AS t2 WHERE (t2.[Zaehler_1K1_7] < t1.[Zaehler_1K1_7]) OR((t2.[Zaehler_1K1_7] = t1.[Zaehler_1K1_7]) AND (t1.[CounterID] > t2.[CounterID])) ORDER BY [Zaehler_1K1_7] DESC, [CounterID]) AS [Zaehler_1K1_7-Differenz] -- hier fehlen noch ein "paar" Anweisungen aber eben stets vom gleichen Aufbau FROM dbo.EnergieMonat AS t1 WHERE (Datum BETWEEN DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) AND DATEADD(ms, - 3, DATEADD(mm, 0, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 1, 0)))) Nun soll / muss das ganze eben via Syntax "verkleinert" werden
  7. dann will ich mal weiter ausholen. wenn ich ein DTSX Paket schreiben will was verdammt viel SQL Syntax enthält bricht das Vorhaben (zb. Import) ab weil das SQL Statement zu lang ist. (meine Vermutung Begrenzung durch nvarchar ca 4000 Zeichen) Somit brauch ich eine Möglichkeit wie eine Abfrage durch eine gewisse Intelligenz mir nun das Ergebnis liefert. Soll heißen durch Schleifen und Co möchte ich wenig SQL Syntax (wegen der Begrenzung) aber eben das gleiche Ziel. :D Die oben aufgeführte Syntax liefert (via print) den gewünschten SQL Aufbau (die eigentliche Syntax wird generiert), diesen Aufbau möchte ich dann nutzen für die eigentliche Abfrage. Ich weiß das es geht aber ich weiß noch nicht wie ich meine Print- Ausgabe nun zu einer SQL Syntax mache :D @ sunny das mit case hatte ich auch schon im Kopf, aber eine while-Schleife und eine sich erhöhende Variable ist denke ich die bessere alternative
  8. Hallo an alle aktuell beschäftige ich mich mit der Vereinfachung von SQL Statements zur besseren Wartung. So habe ich zb. folgendes SQL Statement: declare @i int=1; declare @x int=1; declare @zeile1 nvarchar(30); declare @zeile2 nvarchar(300); --Select while(@x <=11) BEGIN while (@i <=16) BEGIN SET @zeile1 = '[Zaehler_1K'+cast(@x as nvarchar(2))+'_'+cast(@i as nvarchar(2))+']'; SET @zeile2 = ',[Zaehler_1K'+cast(@x as nvarchar(2))+'_'+cast(@i as nvarchar(2))+']-(SELECT TOP 1 [Zaehler_1K'+cast(@x as nvarchar(2))+'_'+cast(@i as nvarchar(2))+'] FROM [SKEMS-HST-POWER].[dbo].[EnergieMonat] AS t2 WHERE (t2.[Zaehler_1K'+cast(@x as nvarchar(2))+'_'+cast(@i as nvarchar(2))+'] < t1.[Zaehler_1K'+cast(@x as nvarchar(2))+'_'+cast(@i as nvarchar(2))+']) OR((t2.[Zaehler_1K'+cast(@x as nvarchar(2))+'_'+cast(@i as nvarchar(2))+'] = t1.[Zaehler_1K'+cast(@x as nvarchar(2))+'_'+cast(@i as nvarchar(2))+']) AND (t1.[CounterID] > t2.[CounterID])) ORDER BY [Zaehler_1K'+cast(@x as nvarchar(2))+'_'+cast(@i as nvarchar(2))+'] DESC, [CounterID]) AS [Zaehler_1K'+cast(@x as nvarchar(2))+'_'+cast(@i as nvarchar(2))+'-Differenz]'; print @zeile1; print @zeile2; SET @i = @i+1; END SET @i=1; SET @x = @x+1; END GO --from [SKEMS-HST-POWER].dbo.EnergieMonat Ich Möchte die 2 while Schleifen nun mit einen Select from ... umschließen und ausführen lassen. Das Print (als Test) liefert schon mal die Grundlage dafür, aber wie kann ich nun das ganze absetzen? kann mir bitte jemand helfen. Mir fehlt absolut der Ansatz nach was ich suchen kann.
  9. nein du hast das nicht richtig verstanden! der Source ist nicht das Thema! if year(getdate()) != (select max (cast(substring(CONVERT(varchar(10),[Datum],101),7,4) as numeric)) from [SKEMS-HST-POWER].[dbo].[EnergieMonat] as t1_max where CounterID = t1_max.CounterID) and MONTH(GETDATE()) = (select max (cast(substring(CONVERT(varchar(10),[Datum],101),1,2) as numeric)) from [SKEMS-HST-POWER].[dbo].[EnergieMonat] as t1_max where CounterID = t1_max.CounterID) RAISERROR ('Daten liegen in Quelle nicht vor.',16,1); ELSE SELECT [CounterID] ,[Datum] ,cast(substring(CONVERT(varchar(10),[Datum],101),7,4) as numeric) as Jahr ,cast(substring(CONVERT(varchar(10),[Datum],101),4,2) as numeric) as Tag ,cast(substring(CONVERT(varchar(10),[Datum],101),1,2) as numeric) as Monat FROM [SKEMS-HST-POWER].[dbo].[EnergieMonat] as t1 where year(getdate()) =(select max (cast(substring(CONVERT(varchar(10),[Datum],101),7,4) as numeric)) from [SKEMS-HST-POWER].[dbo].[EnergieMonat] as t1_max where t1.CounterID = t1_max.CounterID) and MONTH(GETDATE()) = (select max (cast(substring(CONVERT(varchar(10),[Datum],101),1,2) as numeric)) from [SKEMS-HST-POWER].[dbo].[EnergieMonat] as t1_max where t1.CounterID = t1_max.CounterID) GO Mit Raiserror gebe ich mir nun eine Selbstdefinierte Fehlermeldung aus! Da es eine Fehlermeldung ist kann ich im SSIS einen Mail Task bei Fehler starten. Dieser Schickt mir dann ein Mail. Das war das Ziel ;) Jedoch stellt sich mir die Frage warum bei if sowohl der if teil (wenn dieser zutrifft) und gleich auch der else Teil durchlaufen wird. Ich merke das an der Durchlaufszeit! diese ist bedeutend höher egal ob der if teil oder der else teil zutrifft! versteh ich nicht! oder habe ich im Skript noch ein Fehler?
  10. ja das mit der Bedingung ist natürlich richtig! aber ich denke ich habe das Hauptziel noch nicht klar erläutert. Die If-Bedingung funktioniert und läuft tadellos. Jedoch ist auch genau das das Problem. Wenn die Bedingung erfüllt ist macht er die hinterlegte Anweisung. Ist die Bedingung nicht erfüllt möchte im SSIS den nächsten Schritt machen. (das versenden einer E-Mail) Jedoch brauche ich dazu ein Ereignis und hier finde ich kein passendes da ja meine Bedingung erfüllt ist. Sprich entweder erfüllt oder nicht erfüllt - jedoch kein Abbruch oder irgend ein anderen Fehler den ich im SSIS als Ereignis für den Mail Versand nutzen kann. Hierzu bräuchte ich eben die Lösung!
  11. Hallo an alle, ich hoffe ich umschreibe das gewünschte Ergebnis richtig. Ich möchte einen Ereignishandler provozieren wenn ein SQL Statement durch eine If-Schleife abgefragte Überprüfung kein Ergebnis ausgibt. Soll heißen es wird durch eine If-Schleife geprüft ob ein Zustand wahr ist oder nicht. Wenn nicht hätte ich gern irgendwas was Task Mail senden veranlasst. Dies klappt ja aber nur wenn ich ein Ereignis habe wie OnTaskfailed oder so aber irgendwie ist das für meine Zwecke nicht das richtige. Kann ich hier irgendetwas provozieren oder wie muss ich vorgehen das ich das Ergebnis der Abfrage dazu nutzen kann den Task Mail senden zu starten?
  12. schön das es sowas gibt aber dafür ist mein SQL Server zu alt! ich nutze noch den 2008 und der kann das nicht (laut doku) aber trotzdem danke für den tipp
  13. Hallo an alle ich habe ein Problem welches mir Kopfschmerzen bereitet vielleicht kann von euch ja einer helfen. Tabellenaufbau(Tabelle TEST) ID Wert 1 500 2 545 3 578 Nun möchte ich das ich stets die Differenz ausgegeben bekomme zwischen den kleineren und den nächsten höheren Wert. Ich weiß das ich es mit einer Subselection machen muss, aber ich weiß nicht wie! kann mir jemand helfen?
  14. ähhhmmm Sunny61 zwar danke für deine Mühe aber da steht drin wie ein Wartungsplan anlegt wird. das war aber nicht gefragt. ich will ja vorhandene auslesen mit SQL wie sie heißen und wie lange sie dauern.
  15. Hallo ich würde mir gern alle Ergebnisse der Wartungspläne über SQL Abfrage ausgeben lassen. Ziel ist es das Ergebnis (vorallem die Bezeichnung vom Job und die Dauer) in einem Report auszugeben (meinetwegen Excel) und diese an einem Zentralen Ort abspeichern lassen. Geht das? Kann man mit einer SQL Abfrage die Wartungspläne auslesen? Wenn ja wie ? habe nicht gefunden bis jetzt nur eben das Management Studio zum anschauen.
×
×
  • Neu erstellen...