Sql 除日期/时间列外,还包含多个列的表。如何查询和避免重复日期戳?
我在SQL Server中有一个表,除了其他列之外,还有下面的日期/时间戳列。如何查询此表以避免在结果中获得重复的日期?我不在乎查询返回哪个时间戳。我只想要唯一的日期,例如,只有一个2018年5月5日,如果可能的话,它对应的时间戳和它对应的RPM值。类似地,2018年11月6日,带有相应的rpm值和时间戳等Sql 除日期/时间列外,还包含多个列的表。如何查询和避免重复日期戳?,sql,sql-server,datetime,Sql,Sql Server,Datetime,我在SQL Server中有一个表,除了其他列之外,还有下面的日期/时间戳列。如何查询此表以避免在结果中获得重复的日期?我不在乎查询返回哪个时间戳。我只想要唯一的日期,例如,只有一个2018年5月5日,如果可能的话,它对应的时间戳和它对应的RPM值。类似地,2018年11月6日,带有相应的rpm值和时间戳等 RPM Date-time 7932 06/04/2018 16:30:01 +00:00 8314 06/11/2018 16:30:00 +00:00 874
RPM Date-time
7932 06/04/2018 16:30:01 +00:00
8314 06/11/2018 16:30:00 +00:00
8748 06/12/2018 20:52:10 +00:00
8067 06/05/2018 20:15:00 +00:00
8063 06/05/2018 12:45:34 +00:00
8067 06/05/2018 20:15:00 +00:00
8070 06/07/2018 12:02:16 +00:00
8144 06/08/2018 20:30:00 +00:00
8144 06/08/2018 20:30:00 +00:00
8314 06/11/2018 16:30:00 +00:00
8314 06/11/2018 16:30:00 +00:00
8314 06/11/2018 16:30:00 +00:00
8748 06/12/2018 20:52:10 +00:00
8748 06/12/2018 20:52:10 +00:00
9046 06/14/2018 12:14:46 +00:00
9192 06/15/2018 11:13:23 +00:00
9274 06/15/2018 20:30:04 +00:00
9293 06/20/2018 18:47:10 +00:00
9562 06/22/2018 12:30:00 +00:00
10141 06/25/2018 18:26:13 +00:00
10443 06/28/2018 18:35:21 +00:00
10500 06/29/2018 11:14:42 +00:00
10500 06/29/2018 11:14:42 +00:00
10500 06/29/2018 11:14:42 +00:00
10506 06/29/2018 15:45:22 +00:00
10506 06/29/2018 15:45:22 +00:00
10506 06/29/2018 15:45:22 +00:00
10526 07/05/2018 14:14:49 +00:00
10526 07/05/2018 14:14:49 +00:00
10526 07/05/2018 14:14:49 +00:00
10526 07/05/2018 14:14:49 +00:00
我认为我们应该:
select distinct RPM, Date-time
from table t;
但是,我假设您的表也有其他列,如果有,那么您可以使用row\u number()
函数:
select t.*
from (select *, row_number() over (partition by rpm order by date-time) as seq
from table
) t
where seq = 1;
我认为我们应该:
select distinct RPM, Date-time
from table t;
但是,我假设您的表也有其他列,如果有,那么您可以使用row\u number()
函数:
select t.*
from (select *, row_number() over (partition by rpm order by date-time) as seq
from table
) t
where seq = 1;
如果您需要区分RPM和“日期时间”的日期部分,则可以按如下方式实现:
SELECT Distinct RPM, CONVERT(VARCHAR(10),Date-time,111) FROM Table1
如果您需要区分RPM和“日期时间”的日期部分,则可以按如下方式实现:
SELECT Distinct RPM, CONVERT(VARCHAR(10),Date-time,111) FROM Table1
您需要强制转换和分组:
select rpm,cast([Date-time] as date) as _date
from table t
group by rpm,cast([Date-time] as date)
您需要强制转换和分组:
select rpm,cast([Date-time] as date) as _date
from table t
group by rpm,cast([Date-time] as date)
您可以按RPM分组,但随后必须为返回的每个列(或按它们分组)提供聚合函数: e、 g
您可以按RPM分组,但随后必须为返回的每个列(或按它们分组)提供聚合函数: e、 g
编辑问题添加预期结果。如果您只查询这两列,则一个不同的选择就足够了。如果希望选择其他列,则应将它们添加到示例中并提供预期输出。编辑问题“添加预期结果”。如果仅查询这两列,则只需进行一次不同的选择即可。如果您希望选择其他列,那么您应该将它们添加到示例中,并提供预期的输出。我认为这不会达到用户想要的效果,我认为他们的意思是,他们只希望返回每个rpm记录中的一条(这适用于答案的第一部分)。我认为您需要按rpm、日期和时间进行分区(这将允许您按日期从rpm集合中选择一行)。问题已针对我想要的结果进行了修改。我不认为这将实现用户想要的,我认为他们的意思是,他们只希望返回每个rpm记录中的一条(这适用于答案的第一部分)。我认为您需要按rpm、日期和时间进行分区(这将允许您按日期从RPM集合中选择一行).问题已被修改为我在results@SBFrancies-它仍然返回重复的日期。请参见以下结果:2018年6月4日16:30:01+00:00 06/05/2018 12:45:34+00:00 06/05/2018 20:15:00+00:00 06/07/2018 12:02:16+00:00 06/2018 20:30:00+00:00 06/11/2018 16:30:00+00:00 06/12/2018 20:52:10+00:00 06/14/2018 12:14:14+00:00 06/15/2018 11:13:23+00:00 06/15/2018 20:30:04+00:00 06/20/2018 18:47:10+00:00 06/22/2018 12:30:00+00:00 06/25/2018 18:26:13+00:00 06/28/2018 18:35:21+00:00 06/29/2018 11:14:42+00:00 06/29/2018 15:45:22+00:00所以您不需要获得每分钟转数?@SBFrancies它仍然返回重复的日期。请参见下面的结果06/04/2018 16:30:01 +00:00 06/05/2018 12:45:34 +00:00 06/05/2018 20:15:00 +00:00 06/07/2018 12:02:16 +00:00 06/08/2018 20:30:00 +00:00 06/11/2018 16:30:00 +00:00 06/12/2018 20:52:10 +00:00 06/14/2018 12:14:46 +00:00 06/15/2018 11:13:23 +00:00 06/15/2018 20:30:04 +00:00 06/20/2018 18:47:10 +00:00 06/22/2018 12:30:00 +00:00 06/25/2018 18:26:13 +00:00 06/28/2018 18:35:21+00:00 06/29/2018 11:14:42+00:00 06/29/2018 15:45:22+00:00所以你不需要获得每分钟转速?@KeithL-它仍然会给出重复的日期见下面的结果。我认为这是因为2018-06-05 2018-06-05 2018-06-07 2018-06-08 2018-06-11 2018-06-12 2018-06-14 20相同日期的时间戳不同18-06-15 2018-06-15 2018-06-20 2018-06-22 2018-06-25 2018-06-28 2018-06-29 2018-06-29 2018-07-05具有多个RPM值的日期以重复的形式结束。这不是你的问题。当出现超过1 RPM时,你必须决定你想要什么。从组中取出并以某种方式聚合(最大值、最小值、平均值)@keithL你的意思是这样吗?从表t中选择min(rpm),cast([Date-time]as-Date)作为_-Date按cast分组([Date-time]as-Date)@所有这些都会给你一个答案。你应该根据你的要求来做。@KeithL-它仍然会给出重复的日期见下面的结果。我认为这是因为2018-06-05 2018-06-05 2018-06-07 2018-06-08 2018-06-11 2018-06-12 2018-06-14 2018-06-15 2018相同日期的时间戳不同-06-15 2018-06-20 2018-06-22 2018-06-25 2018-06-28 2018-06-29 2018-29 2018-07-05具有多个RPM值的日期最终是重复的。这不是你的问题。当出现超过1 RPM时,你必须决定你想要什么。从组中取出并以某种方式聚合(最大、最小、平均)@keithL你的意思是这样吗?从表t中选择min(rpm),cast([Date time]as Date)as_Date,按cast([Date time]as Date)@Alli进行分组,这会给你一个答案。你应该根据你的要求来确定。