查询以查找和显示ms访问中的唯一记录?

时间:2011-07-13 09:08:52

标签: sql ms-access

我正在使用MS-ACCESS。我有一个字段为Receipt_No的表。在这个领域中,有很多次重复的值。我只想显示这个重复的值一次,而不是多次显示它。 这是我的表:

Registration_No  Payment_Date  Charges  Receipt_No
T-11             8/7/2011      200      105
T-12             8/7/2011      200      106
T-13             7/12/11       200      107
T-14             12/7/2011     200      108
T-15             12/7/2011     400      108

此处在Receipt_No字段108中出现2次我想只显示一次:(收费200或400.但Receipt_No应显示一次):请帮助我..

Registration_No  Payment_Date  Charges  Receipt_No
T-11             8/7/2011      200      105
T-12             8/7/2011      200      106
T-13             7/12/11       200      107
T-14             12/7/2011     200      108

2 个答案:

答案 0 :(得分:1)

如果您只想显示表格中只有一次出现的收据编号的记录,请使用以下查询:

select * from Demand 
where reg_no in (
    select reg_no
    from Demand
    group by reg_no
    having count(*) = 1
)

根据您提供的说明,看起来您想要的更像是this question,您想要返回所有字段,但每个收据编号只有一条记录。以下是accepted answer的变体:

select * from demand
inner join
 (
      select
           receipt_no,
           min(charges) AS min_charges
      from
           demand
      group by
           receipt_no
 ) sq
 on demand.receipt_no = sq.receipt_no
 and demand.charges = sq.min_charges

请注意,这仍然不是您想要的:如果有两个或更多记录具有相同的receipt_no和费用值,则此查询将全部返回。

部分问题是您的表格没有明确定义:它似乎没有一个对每条记录都唯一的字段。使用这样的字段,您可以修改上面的查询,为每个receipt_no返回一行。 (问题的另一部分是业务要求似乎缺少某些东西:通常,我们希望报告收据中的总费用,或收据中的每笔费用。)

答案 1 :(得分:0)

由于您没有提供许多详细信息,但使用SELECT DISTINCT忽略了所选字段中包含重复数据的记录,因此不确定您的查询中究竟需要什么。要包含在查询结果中,SELECT语句中列出的每个字段的值必须是唯一的。

请参阅MS Access Docs了解更多详情

但是作为示例,以下查询将选择所有LastNames,但它将删除重复值。

SELECT DISTINCT LastName
FROM Employees;