【发布时间】:2010-06-29 12:40:11
【问题描述】:
昨天Thomas 通过提供exactly the query I wanted 帮助了我很多。现在我需要它的一个变种,希望有人能帮助我。
我希望它只输出一行,即最大值 - 但它必须基于以下查询中的算法:
WITH Calendar AS (SELECT CAST(@StartDate AS datetime) AS Date
UNION ALL
SELECT DATEADD(d, 1, Date) AS Expr1
FROM Calendar AS Calendar_1
WHERE (DATEADD(d, 1, Date) < @EndDate))
SELECT C.Date, C2.Country, COALESCE (SUM(R.[Amount of people per day needed]), 0) AS [Allocated testers]
FROM Calendar AS C CROSS JOIN
Country AS C2 LEFT OUTER JOIN
Requests AS R ON C.Date BETWEEN R.[Start date] AND R.[End date] AND R.CountryID = C2.CountryID
WHERE (C2.Country = @Country)
GROUP BY C.Date, C2.Country OPTION (MAXRECURSION 0)
上面的输出会是这样的:
Date Country Allocated testers
06/01/2010 Chile 3
06/02/2010 Chile 4
06/03/2010 Chile 0
06/04/2010 Chile 0
06/05/2010 Chile 19
但我现在需要的是
Allocated testers
19
即 - 只有一列 - 一行 - 最大值本身...(对于(通过参数(已存在))选定的日期和国家期间)
【问题讨论】:
-
在您的示例结果中需要的人员应该是分配的测试人员,对吗?
标签: sql visual-studio-2008 sql-server-2005