tutter 0 Geschrieben 23. Januar 2015 Melden Geschrieben 23. Januar 2015 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?
hh2000 10 Geschrieben 24. Januar 2015 Melden Geschrieben 24. Januar 2015 Moin, ohne auf das Subselect einzugehen, müsste ein weiteres GROUP BY ausreichen: SELECT System_Typ, 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) ) z GROUP BY System_Typ Gruß Kai PS: Funktionieren mit der Spalte "Ev_Time" keine Datumsfunktionen?
Lizenzmanager 0 Geschrieben 18. Februar 2015 Melden Geschrieben 18. Februar 2015 ich mag diese SubQueries nicht mehr besonders und benutze lieber das Konstrukt WITH .. AS WITH z AS ( 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) ) SELECT --count (*) as System_Zugriffe_Monat_NB * FROM z macht den Code m.E. nach wesentlich einfacher zu durchschauen. Es geht auch weiter : WITH x AS (SELECT * FROM Tabelle1 WHERE Feld = 1), y AS (SELECT * FROM x WHERE Spalte = 2) SELECT * FROM y Ich hoffe, dass das verständlich und hilfreich war ..
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden