Sql 在已排序的MS Access查询中查找连续区域
我是堆栈溢出的长期粉丝,但我遇到了一个问题,我还没有找到解决方法,需要一些专家帮助。 我有一个按时间顺序排序的查询,日期-时间复合键是唯一的,从未删除过,还有一些数据。我想知道的是,是否有一种方法可以找到值发生变化的区域的起点或终点?即Sql 在已排序的MS Access查询中查找连续区域,sql,ms-access,ms-access-2007,Sql,Ms Access,Ms Access 2007,我是堆栈溢出的长期粉丝,但我遇到了一个问题,我还没有找到解决方法,需要一些专家帮助。 我有一个按时间顺序排序的查询,日期-时间复合键是唯一的,从未删除过,还有一些数据。我想知道的是,是否有一种方法可以找到值发生变化的区域的起点或终点?即 DateTime someVal1 someVal2 someVal3 target 1 3 4 A 1 2 4 A 1 3 4 A 1 2 4 B 1 2 5 B 1 2 5 A 我的查询返回第1、4和6行。它在列5中找到从A到B的变化,然后从B回到A?我尝
DateTime someVal1 someVal2 someVal3 target
1 3 4 A
1 2 4 A
1 3 4 A
1 2 4 B
1 2 5 B
1 2 5 A
我的查询返回第1、4和6行。它在列5中找到从A到B的变化,然后从B回到A?我尝试了查找重复项的方法,并在totals属性中使用了min和max,但是它给出了第一个和最后一个全局值,而不是局部的max和min?有类似的问题吗?我没有看到someVal1、someVal2和someVal3字段的任何用途,所以我将它们忽略了。我使用自动编号作为主键,而不是日期/时间字段;但是这种方法也应该适用于日期/时间主键。这是我的表格版本中的数据
pkey_field target
1 A
2 A
3 A
4 B
5 B
6 A
我使用了一个相关子查询来查找每行前面的pkey_字段值
SELECT
m.pkey_field,
m.target,
(SELECT Max(pkey_field)
FROM YourTable
WHERE pkey_field < m.pkey_field)
AS prev_pkey_field
FROM YourTable AS m;
我没有看到someVal1、someVal2和someVal3字段的任何用途,所以我将它们忽略了。我使用自动编号作为主键,而不是日期/时间字段;但是这种方法也应该适用于日期/时间主键。这是我的表格版本中的数据
pkey_field target
1 A
2 A
3 A
4 B
5 B
6 A
我使用了一个相关子查询来查找每行前面的pkey_字段值
SELECT
m.pkey_field,
m.target,
(SELECT Max(pkey_field)
FROM YourTable
WHERE pkey_field < m.pkey_field)
AS prev_pkey_field
FROM YourTable AS m;
这是第一次尝试
SELECT t1.Row, t1.target
FROM t1 WHERE (((t1.target)<>NZ((SELECT TOP 1 t2.target FROM t1 AS t2 WHERE t2.DateTimeId<t1.DateTimeId ORDER BY t2.DateTimeId DESC),"X")));
这是第一次尝试
SELECT t1.Row, t1.target
FROM t1 WHERE (((t1.target)<>NZ((SELECT TOP 1 t2.target FROM t1 AS t2 WHERE t2.DateTimeId<t1.DateTimeId ORDER BY t2.DateTimeId DESC),"X")));
啊!这很聪明!我仍然在努力掌握子查询的力量,但这是一个非常出色和清晰的回答,我希望我有更多的声誉来支持你的意见。这两页来自你的同胞的文章可能有助于提高你的掌握力:哈哈哈!我已经翻了那两页了,我正拼命地翻着。另一个简单的问题是,这对于固定表非常有效,但是我如何修改这段代码来处理查询呢?这将允许一个表单灵活地选择一个日期范围?为那些在家玩的人编辑我发现,要使这个查询工作,字段名不能通过使用sql中的AS来定义,它们必须是本机字段名才能工作,为@hansupahhhh干杯!这很聪明!我仍然在努力掌握子查询的力量,但这是一个非常出色和清晰的回答,我希望我有更多的声誉来支持你的意见。这两页来自你的同胞的文章可能有助于提高你的掌握力:哈哈哈!我已经翻了那两页了,我正拼命地翻着。另一个简单的问题是,这对于固定表非常有效,但是我如何修改这段代码来处理查询呢?这将允许一个表单灵活地选择一个日期范围?为那些在家玩的人编辑我发现,要使这个查询工作,字段名不能通过使用sql中的AS来定义,它们必须是本机字段名才能工作,为@HansUp干杯