2016-06-09 5 views
0

habe ich irgendwie ein paar Tabellen verknüpft und bekam einige Spalten, so, wenn ich SELECT SSN, Name, Year2010/Season1, Year2010/Season2, Year2010/Season3, Year2010/Season4 FROM (SELECT ......) AS WORKERS laufen bekomme ich eine Tabelle showen wie folgt:SQL Server - Wie Spalten kombinieren mit dem gleichen

SSN Name Year2010/Season1 Year2010/Season2 Year2010/Season3 Year2010/Season4 
112 John   5.4 
234 Tom       4.2 
543 Ben               9.3 
234 Tom           3.2 

der Tabelle sind die Arbeiter zeigt und die Stunden, die sie in jedem Jahr und in jeder Periode arbeiten. Ich versuche jedoch, diese doppelten Werte zu kombinieren (gleiche Person) und alle Stunden in dieselbe Zeile zu verschieben, abhängig von Jahr und Jahreszeit. So etwas wie diese (wo Tom bewegte):

SSN Name Year2010/Season1 Year2010/Season2 Year2010/Season3 Year2010/Season4 
112 John   5.4         
234 Tom       4.2    3.2 
543 Ben               9.3 

Ich habe stundenlang versucht, aber nicht wirklich einen guten Weg finden, diese in Abhängigkeit von der Select-Anweisung zu kombinieren ich diesen Tisch zu bekommen tue. Irgendein Vorschlag?

Antwort

1

Scheint, wie Sie SUM verwenden müssen:

SELECT SSN, 
     Name, 
     SUM([Year2010/Season1]) [Year2010/Season1], 
     SUM([Year2010/Season2]) [Year2010/Season2], 
     SUM([Year2010/Season3]) [Year2010/Season3], 
     SUM([Year2010/Season4]) [Year2010/Season4] 
FROM dbo.YourTable 
GROUP BY SSN, 
     Name; 
+0

Vielen Dank für Ihre Antwort. Ich habe vergessen zu erwähnen, dass die Werte der Stunden als VARCHAR eingestellt sind. Allerdings habe ich diese Methode benutzt und die 'SUM' in' MAX' geändert und es scheint zu funktionieren. –

+0

Gibt es eine Möglichkeit, die Werte von SSN zu bestellen? –

+0

ja, tun Sie einfach 'GROUP BY SSN, Name ORDER BY SSN;' – Lamak

2

Sie Aggregation wollen. Sie können dies möglicherweise einfacher tun, indem Sie Ihre Abfrage anpassen, aber Sie können auch Folgendes tun:

with q as (<your query here>) 
select ssn, name, 
     max([Year2010/Season1]) as [Year2010/Season1], 
     max([Year2010/Season2]) as [Year2010/Season2], 
     max([Year2010/Season3]) as [Year2010/Season3], 
     max([Year2010/Season4]) as [Year2010/Season4] 
from q 
group by ssn, name; 
+0

Was passiert, wenn es mehrere Zeilen für einen Mitarbeiter mit Werten im gleichen Zeitraum gibt? – dfundako

Verwandte Themen