当前位置: 首页 > 面试题库 >

如何在多个子记录集中查询不同的值

卫骏
2023-03-14
问题内容

我正在使用SQL Server 2008。

下面是一个示例记录集。

我想每次更改“值”时都要查询一次。例如,我想要第1、9、14、26、28、37和50行。

我曾尝试使用SELECT DISTINCT,但这不起作用,因为“值”列具有重复的值(即第1行和第14行)。

我已经搜索了一段时间,但没有找到解决方案。如果您有一个,请告诉我!谢谢!

Row Value   Time Stamp
1   1916    2013-10-01 00:05:00
2   1916    2013-10-01 00:06:00
3   1916    2013-10-01 00:07:00
4   1916    2013-10-01 00:08:00
5   1916    2013-10-01 00:09:00
6   1916    2013-10-01 00:18:00
7   1916    2013-10-01 00:21:00
8   1916    2013-10-01 00:22:00
9   2272    2013-10-01 00:36:00
10  2272    2013-10-01 00:37:00
11  2272    2013-10-01 00:40:00
12  2272    2013-10-01 00:41:00
13  2272    2013-10-01 00:42:00
14  1916    2013-10-01 00:43:00
15  1916    2013-10-01 00:55:00
16  1916    2013-10-01 00:56:00
17  1916    2013-10-01 00:58:00
18  1916    2013-10-01 00:59:00
19  1916    2013-10-01 01:02:00
20  1916    2013-10-01 01:03:00
21  1916    2013-10-01 01:05:00
22  1916    2013-10-01 01:06:00
23  1916    2013-10-01 01:07:00
24  1916    2013-10-01 01:08:00
25  1916    2013-10-01 01:09:00
26  1860    2013-10-01 01:20:00
27  1860    2013-10-01 01:21:00
28  2272    2013-10-01 01:22:00
29  2272    2013-10-01 01:23:00
30  2272    2013-10-01 01:24:00
31  2272    2013-10-01 01:25:00
32  2272    2013-10-01 01:26:00
33  2272    2013-10-01 01:27:00
34  2272    2013-10-01 01:28:00
35  2272    2013-10-01 01:29:00
36  2272    2013-10-01 01:30:00
37  1917    2013-10-01 01:31:00
38  1917    2013-10-01 01:36:00
39  1917    2013-10-01 01:37:00
40  1917    2013-10-01 01:39:00
41  1917    2013-10-01 01:42:00
42  1917    2013-10-01 01:43:00
43  1917    2013-10-01 01:47:00
44  1917    2013-10-01 01:48:00
45  1917    2013-10-01 01:49:00
46  1917    2013-10-01 01:54:00
47  1917    2013-10-01 01:55:00
48  1917    2013-10-01 01:56:00
49  1917    2013-10-01 02:01:00
50  1860    2013-10-01 02:02:00
51  1860    2013-10-01 02:03:00
52  1860    2013-10-01 02:05:00
53  1860    2013-10-01 02:07:00
54  1860    2013-10-01 02:08:00

问题答案:

在最新版本的SQL Server中,可以使用该lag()功能。假设您使用的是旧版本,则可以改用相关子查询:

select Value, TimeStamp
from (select t1.*,
             (select top 1 value
              from t t2
              where t2.timestamp < t.timestamp
              order by timestamp desc
             ) as prevvalue
      from t t1
     ) t1
where prevvalue is null or prevvalue <> value;


 类似资料:
  • 问题内容: 我在这里的第一篇文章,所以我希望这是正确的领域。我当前正在尝试比较2个记录集,其中一个来自命名范围的Excel,另一个来自Access数据库中的表。每个的代码是: 问题是我想以某种方式比较这两个记录集,而不会循环(有大量记录)。有什么办法可以对这些记录集进行联接或类似操作吗? 由于一个来自Excel,另一个来自Access,因此我无法在创建记录集之前进行联接,因此它们是两个不同的DAO

  • 问题内容: 我有一个JAVA类,用于启动具有唯一ID的各种线程。每个线程应登录到一个唯一的日志文件中,该文件以ID.log命名。 因为我仅在运行时获得唯一ID,所以我必须以编程方式配置Log4J: 现在,如果我按顺序启动作业,此方法就可以正常工作- 但是,当我同时启动2个线程(同一类)时,会创建两个日志,但日志混合在一起:第二个线程同时登录第一个和第二个日志。 我如何确保每个实例都是唯一的?我已经

  • 我有一张这样的桌子: MySQL>按id限制11从MyTable顺序中选择id、书籍、章节、段落、RevisionNum; 要找到没有未修改段落的书籍或章节,我希望查询该章节或书籍的所有不同id的最大值的最小值,或者以某种方式确定没有id保持未编辑(MAX(RevisionNum)为零)。 我的大多数约会尝试都以这样的错误告终: ...而我根本就没有使用“group by”函数! 下面的查询生成结

  • 我在数据库中有两个带有绑定主键的表,我希望在它们之间找到一个不相交的集。例如 有列()和示例数据: 那么,我如何创建一个SQL查询,以便我可以从中获取没有在中的带有ID的行。在这种情况下,应该返回吗? PS:ID是这两个表的主键。

  • 我正在使用MongoDB,我最终得到了两个集合(无意中)。 第一次收集(样本)有1亿条记录(推文),结构如下: 第二个集合(用户)拥有来自tweet集合的3000万条独特用户记录,看起来是这样的 用户集合中的_id是来自推文集合的user.screen_name,目标是他们的状态(是否作弊用户),最后value.count是我们第一个集合(样本)集合中出现的用户数量(例如捕获的推文数量) 现在我想

  • 当我对同一路径有多个嵌套子查询时,结果似乎只包括最后一个嵌套子查询的内部命中结果。有没有办法返回多个嵌套子查询的所有内部命中结果? e. g.