![](/img/trans.png)
[英]SQL Query: Select Column1,Count of rows (criteria1),Count of rows(criteria2)
[英]SQL query count by week with criteria
我必须按星期编写数据库中脚手架数量的趋势报告。 在下面的示例中,我可以获得按周竖起的脚手架数量,也可以使用相同的查询将其拆除,但这不是我所需要的。
SELECT COUNT(scaffID) Erected, WeekStart
FROM
(
SELECT ScaffID,
dateadd(week, datediff(day,0,Erected) / 7, 0) AS WeekStart
FROM Scaffolds
) o
GROUP BY WeekStart
我可以通过指定日期从中获得站立式脚手架,但我希望每个星期五都说站立式脚手架。
Declare @staticDate As DateTime
Set @staticDate = '2/1/2015'
Select COUNT(scaffID) As StandingScaffolds
from RequestInfo
Where ( ErectDate<= @staticDate )
And ( DismantleDate>= @staticDate
or DismantleDate Is NULL
)
这让我发疯,所以我们将不胜感激。
菲尔
这应该给您一些开始。
DECLARE
@startDate date = '2015-01-01',
@endDate date = '2015-01-28';
with myWeeks (myWeek) AS (
select DATEPART(WEEK,@startDate) myWeek
UNION ALL
select myWeek + 1 from myWeeks
where
myWeek < DATEPART(WEEK,@endDate)
)
select
w,
COUNT(s.Erected) standingScaffolds
from myWeeks w
left join Scaffolds s on
w.myWeek between DATEPART(WEEK,s.Erected) and DATEPART(WEEK,s.Dismantled)
您可能要为此生成一个日期表(=每天有一行的表)。 然后,您可以将其与该表连接起来以很容易地获得计算结果。
select d.date, count(s.scaffID)
from date d, scaffolds s
where s.erected <= d.date and
(dismantled>= d.date or dismantled is NULL) and
d.date >= @stardate and
d.date <= enddate
group by d.date
希望这没关系,现在无法测试。
日期表在其他情况下也非常有用,例如,您可以在那里度过当地假期。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.