简体   繁体   English

基于条件的最小(字段)MS-Access查询

[英]MS-Access query on Min(Fields) based on criteria

Please help me to construct an SQL query to find minimum amt in field AMT based on least date and Name : I want to populate field [Min amt] in an ACCESS Table which is based on least date against Name. 请帮助我构造一个SQL查询,以根据最小日期和名称在字段AMT中查找最小amt:我想在基于最小日期与名称的ACCESS表中填充字段[Min amt]。 For example name A has least date 4/9/17 and its amt is 7000 : 例如,名称A的日期最少为4/9/17,其amt为7000:

Name    Date         Amt        Min Date     Min Amt
A       4/12/2017    $1,000.00  4/9/2017     $7,000.00 
A       4/11/2017    $2,000.00  4/9/2017     $7,000.00 
B       4/10/2017    $3,000.00  4/10/2017    $3,000.00 
B       4/11/2017    $4,000.00  4/10/2017    $3,000.00 
C       4/10/2017    $5,000.00  4/10/2017    $5,000.00 
C       4/11/2017    $6,000.00  4/10/2017    $5,000.00 
A       4/9/2017     $7,000.00  4/9/2017     $7,000.00 

I would recommend that you not actually create those computed columns. 我建议您不要实际创建这些计算列。 They could easily be invalidated as soon as new data comes in, rendering them useless to you. 一旦有新数据传入,它们很容易失效,从而使它们对您毫无用处。

Instead, I would recommend just creating a report showing the earliest amounts for each name: 相反,我建议您仅创建一个显示每个名称最早金额的报告:

SELECT t1.Name, t1.Date, t1.Amt,
       t2.[Min Date],
       t2.[Min Amt]
FROM yourTable t1
INNER JOIN
(
    SELECT t1.Name, t1.Date AS [Min Date], t1.Amt AS [Min Amt]
    FROM yourTable t1
    INNER JOIN
    (
        SELECT Name, MIN(Date) AS min_date
        FROM yourTable
        GROUP BY Name
    ) t2
        ON t1.Name = t2.Name AND
           t1.Date = t2.min_date
) t2
    ON t1.Name = t2.Name

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM