【发布时间】:2013-08-23 17:25:25
【问题描述】:
我正在尝试获取一个人的总记录时间超过一定数量的天数。现在我只能获得一列关于天数的准确数据(我目前在所有天数列中都超过 60 天。基本上我想为所有没有时间进行该特定记录的人返回 0长度增量。我还想获得所有增量的天数,这些人的天数以这些增量记录长度。
基本上我希望我可以在定义列时将“Where”子句与列名放在一起。(我知道那样不行)解决这个问题的最佳方法是什么?
这是我的代码:
WITH CTERecordingsByDate AS
(
SELECT Person.FirstName,
Person.LastName,
CAST(Created AS DATE) AS Whole_Date,
SUM(Length)/60 AS Recordings_Sum, --Length is in seconds
FROM Recordings
JOIN Person ON Recordings.PersonID=Person.ID
WHERE Created BETWEEN '2013-07-01 00:00:00.000'
AND '2013-08-01 00:00:00.000'
GROUP BY Person.FirstName,
Person.LastName,
CAST(Created AS DATE)
)
SELECT FirstName,
LastName,
COUNT(*) AS DaysAbove60
COUNT(*) AS DaysAbove100
COUNT(*) AS DaysAbove140
FROM CTERecordingsByDate
WHERE Recordings_Sum >= 60
AND Recordings_Sum < 100
GROUP BY FirstName, LastName
ORDER BY COUNT(*) DESC
【问题讨论】:
标签: sql sql-server join where with-statement