Jump to content

TSQL Count mehrere Spalten


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

Empfohlene Beiträge

Geschrieben (bearbeitet)

Hallo zusammen,

 

gibt es inzwischen eine möglich mit SQL einen COUNT über mehrere Spalten zu fahren? Wir setzten SQL Server 2008 ein. Folgendes Problem:

 

Ich habe eine Temporäre Tabelle mit folgenden Werten: siehe Anhang1

 

Ich brauche einen Abfrage die mir folgendes Ergebnis liefert: siehe Anhang2

 

Versucht habe ich es bereits folgendermaßen:

 

Select LeftSide As Messwert, COUNT (LeftSide) As LeftSide

FROM #MESSKANTEN

Group by LeftSide

Order by Messwert

 

Damit bekomme ich aber nur die gemessenen Werte der linken Seite. Ich denke ich muss erst mal einen unter select machen der mir alle gemessen Werte gruppiert Liefert.

 

Kann mir hierbei jemand helfen?

 

Viele Grüße

Hansen

post-59901-13567389957604_thumb.jpg

post-59901-13567389957802_thumb.jpg

bearbeitet von Hansen
Geschrieben

Hi,

 

das ist das tolle an so einem Forum - da wird man doch gleich im Ehrgeiz gepackt, sich damit auseinanderzusetzen.

Da ich bislang noch nichts mit PIVOT / UNPIVOT unternommen habe, dein Problem aber in diese Richtung zeigt, habe ich ein wenig getestet und folgende Lösung gefunden.

 

Du musst zunächst dafür sorgen, dass du die einzelnen Messwerte als eigene Spalte bekommst und hinter jedem Messwert erkennst, aus welcher Spalte dieser Messwert stammt. Dies tut der UNPIVOT für dich.

 

Nun hast du eine schöne Liste mit Messwerten und den entsprechenden Namen des Messfühlers / der Quellspalte.

 

Mittels einem PIVOT kannst du das ganze nun wieder inkl. deinem Count in eine Tabelle umformen, wobei deine Namen der Quellspalten wieder zur Spaltenbezeichnung werden.

 

Codiert schaut das ganze so aus:

 


SELECT WERT AS ' ',TopSide,BottomSide,RightSide,LeftSide
FROM

(SELECT WERT,Spalte
FROM 
(SELECT 
	TopSide
	,BottomSide
	,RightSide
	,LeftSide
 FROM 
	#MESSKANTEN) SourceTbl
UNPIVOT 
(WERT FOR Spalte in (TopSide,BottomSide,RightSide,LeftSide)) UnpivotTbl) SourceTblPivot

PIVOT
(
COUNT(Spalte)
FOR Spalte IN ([TopSide],[bottomSide],[RightSide],[LeftSide])
) PivotTbl

 

Ich bin aber sehr gespannt darauf, ob es hier ggf. einfachere Lösungen gibt.

Denn wie heißt es doch so schön - "da sieht man den Wald vor lauter Bäumen manchmal nicht mehr".

 

Viele Grüße!

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