2010-12-23 4 views
7

Ich möchte wissen, ob das Folgende möglich ist.Gruppe von in Unterabfrage und Basisabfrage SQL Server

Ich habe eine Tabelle, von denen ich drei Spalten mit Daten abgerufen werden sollen:

Tag, Summe der geleisteten Arbeitsstunden, Summe der geleisteten Arbeitsstunden mit Bedingung

Meine Frage ist

SELECT  Day, SUM(Regular + Extra + Overtime) AS [Potential Hours], 
         (SELECT  SUM(Extra + Regular + Overtime) AS Expr1 
         FROM   dbo.TICPlus_Effort_Billable_Only 
         WHERE  (Manager NOT LIKE '%manager1%')) AS [Billed Hours] 
FROM   Billable AS Billable1 
GROUP BY Day 

Mit dieser Abfrage erhalte ich die Summe aller Daten in der Unterabfrage für jede Zeile, aber ich möchte die Unterabfrage, die die Einschränkung enthält, nach Tag gruppieren. Ist es möglich, eine Gruppe in der Unterabfrage zu haben, um das zu tun, damit ich täglich die tägliche Summe mit der Bedingung bekomme?

Hoffnung jemand mich in der richtigen Richtung

Antwort

13

Nein zeigen kann, Sie werden in der Lage zu tun, das nicht als die SUB QUERY in der SELECT-Liste wird dann mehr als 1 Wert zurück.

Sie müssen es in einer Sub-Abfrage in der FROM-Klausel wie

Etwas

SELECT Day, 
     SUM(Regular + Extra + Overtime) AS [Potential Hours], 
     SubSum AS [Billed Hours] 
FROM Billable AS Billable1 LEFT JOIN 
     (
      SELECT Day, 
        SUM(Extra + Regular + Overtime) AS SubSum 
      FROM dbo.TICPlus_Effort_Billable_Only 
      WHERE (Manager NOT LIKE '%manager1%') 
      GROUP BY Day 
     ) s ON Billable1.Day = s.Day 
GROUP BY Day 
+0

Sie tun Danke für die Klarstellung. Sehr geschätzt. – Node17