[英]getting min and max date
My query: 我的查询:
with
CTE (CardID,Name,Surname,Department,CurrentDate,Time_In,Time_Out) as (
select CardID, Name, Surname, Department, convert(char, pocdate, 106) as CurrentDate,
case when GateID in (1,6) then min(convert(char,pocdate,108)) else '' end as Time_In,
case when GateID in (2,5) then max(convert(char,pocdate,108)) else '' end as Time_Out
from tblEmployee
where Name = 'erdal'
group by CardID,Name,Surname,Department,GateID,pocdate
)
select CardID,Name,Surname,Department,CurrentDate,Time_In,Time_Out
from CTE
group by CardID,Name,Surname,Department,CurrentDate,Time_In,Time_Out
order by CardID asc;
Result: 结果:
CardID Name Surname Department CurrentDate Time_In Time_Out
--------- ------- --------- ------------ ------------- ----------- ----------
6672983 ERDAL HUZMELI IT 11-Jan-16 12:41:32
6672983 ERDAL HUZMELI IT 11-Jan-16 17:38:21
6672983 ERDAL HUZMELI IT 11-Jan-16 08:01:53
6672983 ERDAL HUZMELI IT 11-Jan-16 08:03:24
6672983 ERDAL HUZMELI IT 11-Jan-16 13:22:22
6672983 ERDAL HUZMELI IT 11-Jan-16 13:26:47
6672983 ERDAL HUZMELI IT 11-Jan-16 17:36:46
Is there a way to find only minimum Time_In
and maximum Time_Out
as below? 有没有办法只找到最小的
Time_In
和最大的Time_Out
,如下所示?
CardID Name Surname Department CurrentDate Time_In Time_Out
--------- ------- --------- ------------ ------------- ----------- ----------
6672983 ERDAL HUZMELI IT 11-Jan-16 08:01:53 17:38:21
Your query doesn't seem to need a CTE. 您的查询似乎不需要CTE。 You can just do the aggregation in one step.
您只需一步即可进行汇总。 What you want is conditional aggregation:
您想要的是条件聚合:
Select CardID, Name, Surname, Department,
convert(varchar(32), pocdate, 106) as CurrentDate,
min(case when GateID in (1, 6) then convert(varchar(32), pocdate, 108))
end) as Time_In,
max(case when GateID in (2, 5) then convert(varchar(32), pocdate, 108))
end) as Time_Out
from tblEmployee
where Name = 'erdal'
group by CardID, Name, Surname ,Department, kGateID,
convert(varchar(32), pocdate, 106);
Note: In SQL Server, you should always include a length when using varchar()
and char()
. 注意:在SQL Server中,使用
varchar()
和char()
时应始终包含长度。 The default value varies by context and depending on the default might introduce hard-to-debug errors. 默认值因上下文而异,并且取决于默认值,可能会引入难以调试的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.