2010-12-23 93 views
7

我想知道以下是否可能。Group by in subquery and base query sql server

我有一个表,我想检索数据的3列:

日,小时琛的工作,几个小时之和与条件工作

我的查询是

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 

通过这个查询,我得到了每行的子查询中所有数据的总和,但是我想让包含约束的子查询按天分组。是否有可能在子查询中有一个组来做到这一点,所以我每天都会得到每天的条件总和?

希望有人能指出我在正确的方向

回答

13

不,你不能做,因为在SELECT列表中的SUB查询将然后返回更多的值1。

你需要做的是在一个SUB查询FROM子句

喜欢的东西

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

谢谢你的澄清。非常感谢。 – Node17 2010-12-23 12:13:56