注(日):这是关系到我这里的其他问题,Select column where another related column's total is 0回报最高基于总的另一列
我有一个表叫xDays设置如下图所示:
╔══════════════╦═════════════════════════╦═══════╗
║ Project_Name ║ Date ║ Hours ║
╠══════════════╬═════════════════════════╬═══════╣
║ proj1 ║ 2015-03-06 00:00:00.000 ║ 2 ║
║ proj1 ║ 2015-03-05 00:00:00.000 ║ 3 ║
║ proj1 ║ 2015-03-04 00:00:00.000 ║ 0 ║
║ proj2 ║ 2016-03-03 00:00:00.000 ║ 1 ║
║ proj2 ║ 2016-03-04 00:00:00.000 ║ 0 ║
║ proj2 ║ 2016-03-05 00:00:00.000 ║ 0 ║
╚══════════════╩═════════════════════════╩═══════╝
对于每个Project_Name
总共有Hours
大于0
,我只想返回该项目的最后一个Date
条目,如果它大于一年前,并且如果它超过0小时。
在上表中,select语句将返回proj1 | 2015-03-03 00:00:00.000
,因为它的总小时数大于0(在这种情况下为5),它是最近的日期,大于0小时,并且发生在一年多以前。
现在我有:
select max(day), project_name
from xDays
where hours > 0
group by project_name, hours
having max(day) < dateadd(dd, -365, getdate())
order by project_name
这成功地让我的日期>一年前> 0小时,但它不会给只是最新的一个。
对于上面的例子,它会给
2015-03-06 00:00:00.000 | proj1
2015-03-05 00:00:00.000 | proj1
我想用max(day)
不会为同一个项目返回多个日期?
除了'project_name'之外,你正在用'hours'对它进行分组。从'group by'中删除'hours'。 – Siyual
是的工作!谢谢 – pfinferno