我想知道以下是否可行。
我有一个表,我想要检索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
使用此查询,我获得每行的子查询中所有数据的总和,但我希望包含要按日分组的约束的子查询。是否有可能在子查询中有一个组来执行此操作,以便每天获得每日条件的总和?
希望有人能指出我正确的方向
答案 0 :(得分:17)
不,你将无法做到这一点,因为SELECT列表中的SUB QUERY将返回更多的1值。
您需要在FROM子句的SUB查询中执行此操作
像
这样的东西 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
答案 1 :(得分:0)
SELECT
DAY,
SUM(Regular + Extra + Overtime) AS [ Potential Hours ],
(
SUM CASE WHEN Manager NOT LIKE '%manager1%' THEN(Extra + Regular + Overtime)
END
) AS Expr1
FROM
dbo.TICPlus_Effort_Billable_Only
GROUP BY
DAY
答案 2 :(得分:0)
是的,你可以 “可以在任何允许使用表达式的地方使用子查询”As the doc says