2017-07-07 4 views
1

Meine Tabelle sieht wie folgt aus (I bei Energieunternehmen arbeiten)SQL Server: SUM mehrere Zeilen in Abhängigkeit von einem conditon

dte    hub   Peak   Offpeak 
07-04-2017  SoCo   36.19   18.23 
07-04-2017  SwapBID  0.5    0.25 
07-05-2017  SoCo   32.12   21.72 
07-05-2017  SwapBID  0.25   0.25 
07-06-2017  SoCo   33.87   20.34 
07-06-2017  SwapBID  0.5    0.5 

Ich möchte die Daten aus dieser Tabelle zu ziehen, um der Lage sein, eine Auswahlabfrage mit und Machen Sie es so, dass die Peak- und Offpeak-Preise der beiden Hubs für die gleichen Tage addiert werden. Zum Beispiel möchte ich am Tag 07/04/2017 zeigen, dass der Peak 36,69 und der Offpeak 18,48 war. Ich möchte das für jeden Tag in der Tabelle tun. Wie kann ich das programmieren?

+1

mit diesen Beispieldaten, was ist das erwartete Ergebnis - wie formatierten Text? – jarlh

+1

Sie sollten posten, was Sie versucht haben - und jede Forschung, die Sie getan haben. –

Antwort

1

aggregieren Sie Ihre Tabelle nach Datum und Summe der Spitze und offpeak Werte:

SELECT 
    dte, 
    SUM(Peak) AS Peak, 
    SUM(Offpeak) AS Offpeak 
FROM yourTable 
GROUP BY dte 

Wenn ein bestimmtes Datum mehr als ein hub Art haben könnte, aber wir wollten nur SoCo und SwapBID Hubs betrachten, dann könnten wir sollten Sie erwägen, eine WHERE-Klausel der Abfrage:

WHERE hub IN ('SoCo', 'SwapBID') 
0

Sie suchen Aggregationen group by

Versuchen:

create table #t(dte date,hub varchar(100),Peak float,Offpeak float) 
insert into #t values 
('07-04-2017','SoCo',36.19,18.23), 
('07-04-2017', 'SwapBID',0.5,0.25), 
('07-05-2017','SoCo',32.12,21.72), 
('07-05-2017','SwapBID',0.25,0.25), 
('07-06-2017', 'SoCo,33.87,20.34), 
('07-06-2017', 'SwapBID',0.5,0.5) 

select dte, 
sum(Peak) as total_peak, 
sum(Offpeak) as total_offpeak 
from #t 
group by dte