Jump to content

Subselect counten


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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?

Link zu diesem Kommentar

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?

 

Link zu diesem Kommentar
  • 4 Wochen später...

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 ..

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...