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

Geschrieben

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?

Geschrieben

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?

 

  • 4 Wochen später...
Geschrieben

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

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

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...