在Access中具有多个列的查询中选择单个不同的列

时间:2011-08-23 20:17:57

标签: sql ms-access distinct

背景:我在MS Access中创建一个查询。我的问题是我有一个表,记录了一个动作的开始时间,涉及的用户,问题中的项目和交易的类型。对于每个活动,此活动有四个标记,每个项目两个,每种类型两个:表格

Table of Data

我想创建一个Query,它为User和每个匹配的Item显示每个StartTime的一条记录。但是,这是一个基本示例,可能有更多用户,项目或类型。

我目前的查询结果如下:

SELECT DISTINCT (CIN.StartTime), CIN.User, CIN.Item, CIN2.Item 
FROM Query2 AS CIN INNER JOIN Query2 AS CIN2 ON CIN.StartTime = CIN2.StartTime 
WHERE (((CIN.Item)<>"" And (CIN.Item)<>[CIN2].[Item]) AND ((CIN.Type)="ITEM" Or (CIN.Type)="CALL") AND ((CIN2.Type)="ITEM" Or (CIN2.Type)="CALL"));

Query

如您所见,查询已关闭,但每个StartTime仍有两个标记。表面上,每个项目两个作为连接,抓取每个Item值并将其连接到另一个值。

作为我的问题的警告,我无法更改表值或原始数据,所以我在查询中寻找一个程序化的解决方案。我想知道是否有一种方法可以从结果中选择一个不同的StartTime,而其他列也不同,或者是其他一些聪明的解决方案?

谢谢

1 个答案:

答案 0 :(得分:1)

And (CIN.Item)<>[CIN2].[Item])更改为And (CIN.Item)<[CIN2].[Item])。通过仅允许CIN.Item在ABC顺序中位于CIN2.Item之前的行,这将避免您获得的重复对。