tutter 0 Geschrieben 23. Januar 2015 Melden Teilen 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? Zitieren Link zu diesem Kommentar
hh2000 10 Geschrieben 24. Januar 2015 Melden Teilen 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? Zitieren Link zu diesem Kommentar
Lizenzmanager 0 Geschrieben 18. Februar 2015 Melden Teilen 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 .. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.