2017-11-01 1 views
1

ich folgende Abfrage geschrieben haben:fusionieren 2 Reihen zu einer auf der ersten Spalte

SELECT r.StartTime, 
     (CASE d.DayOfWeekendInd WHEN 'Y' THEN COUNT(*) END) as 'WEEKDAY', 
     (CASE d.DayOfWeekendInd WHEN 'N' THEN COUNT(*) END) as 'WEEKEND' 
FROM t_fact_rit as r 
LEFT JOIN t_dim_date d ON r.DateId=d.DATE_SK 
GROUP BY r.StartTime, d.DayOfWeekendInd 
ORDER BY r.StartTime; 

die in der folgenden Ergebnisse:

result

Wie kann ich die beiden Zeitreihen verbinden, so dass es sich ein, während die anderen zwei Spalten immer noch gehalten werden? Danke im Voraus.

PS Dialekt ist MSSQL.

+0

Können Sie mir bitte Beispiel der erforderlichen Ausgabe geben –

Antwort

2

Sie möchten eine bedingte Aggregation. Der Ausdruck CASE ist das Argument für die Aggregationsfunktionen, nicht andersherum:

SELECT r.StartTime, 
     SUM(CASE WHEN d.DayOfWeekendInd = 'Y' THEN 1 ELSE 0 END) as WEEKDAY, 
     SUM(CASE WHEN d.DayOfWeekendInd = 'N' THEN 1 ELSE 0 END) as WEEKEND 
FROM t_fact_rit as r LEFT JOIN 
    t_dim_date d 
     ON r.DateId=d.DATE_SK 
GROUP BY r.StartTime 
ORDER BY r.StartTime; 
Verwandte Themen