Sql 获取每个id的最小值
我想知道每个电话的最短时间。每个调用可以有七个部分,所有部分都记录在同一个调用id上。我想做的是确定每个调用id的最小时间,但是当我以一种方式查询它时,我会得到重复的值,或者如果我以另一种方式查询它,我只会得到最小值 我希望最终能够按小时统计所有电话 这是我一直在使用的查询,用于尝试获取唯一的调用id和时间,但目前返回的是重复的 例如: Callid 1=2014-07-04 16:37:22.043 callid 2=2014-07-04 16:37:23.370 我想要的只是来自1的值Sql 获取每个id的最小值,sql,sql-server,time,min,Sql,Sql Server,Time,Min,我想知道每个电话的最短时间。每个调用可以有七个部分,所有部分都记录在同一个调用id上。我想做的是确定每个调用id的最小时间,但是当我以一种方式查询它时,我会得到重复的值,或者如果我以另一种方式查询它,我只会得到最小值 我希望最终能够按小时统计所有电话 这是我一直在使用的查询,用于尝试获取唯一的调用id和时间,但目前返回的是重复的 例如: Callid 1=2014-07-04 16:37:22.043 callid 2=2014-07-04 16:37:23.370 我想要的只是来自1的值 se
select t.callid, (select min(timein) from loggeddata t2 where t2.callid = t.callid and t2.timein > t.timein
) as 'mintime'
from loggeddata t
不需要子查询,只需使用
groupby
定义分组表达式并将聚合添加为列:
select t.callid,
min(timein) as 'mintime'
from loggeddata
GROUP BY callid
最后也谢谢你这么简单的回答,这是一个更大问题的一部分,显而易见的答案对我来说并不突出!同样感谢您的回答抱歉,我标记了第一个给出答案的人,您只能有一个正确答案,因此当我使用的答案与您的答案相同时。嗨,谢谢您的回答,将其转换为cte是我的下一个选择,目的是使整个查询变得更简单,因为它得到了分配给它的更多部分,然后只是这一点,我没有足够的声誉来标记这个答案,尽管没有问题……如果它给出了你想要的解决方案,那么它就不仅仅是得分:)
select callid,min(timein) from loggedata group by callid;
;WITH CTE AS
(
select t.callid, (select min(timein) from loggeddata t2 where t2.callid = t.callid and t2.timein > t.timein
) as 'mintime'
from loggeddata t
)
Select c.callid,c.mintime from (select
row_number() over (partition by mintime order by callid desc) as seqnum
from CTE )c
where seqnum = 1