Sql 将查询结果用作另一个查询的参数

Sql 将查询结果用作另一个查询的参数,sql,ms-access,subquery,distinct,Sql,Ms Access,Subquery,Distinct,我有两张桌子: 表1:项目ID、项目名称 表2:发票InvoiceId、InvoiceNum、InvoiceDate、ItemId..等其他列不相关 我需要找到一个独特的项目,最新的,只有最新的发票日期。 到目前为止,我在第一个表上创建了一个不同的第一个查询,然后,对于每个结果,我在第二个表top 1上运行一个新的查询,按日期描述排序 它可以工作,但需要永远我有超过10000件物品。 我正在使用asp classic和access,但我很确定问题与SQL有关 我试着用这个条款,其中。。。但查询将

我有两张桌子:

表1:项目ID、项目名称

表2:发票InvoiceId、InvoiceNum、InvoiceDate、ItemId..等其他列不相关

我需要找到一个独特的项目,最新的,只有最新的发票日期。 到目前为止,我在第一个表上创建了一个不同的第一个查询,然后,对于每个结果,我在第二个表top 1上运行一个新的查询,按日期描述排序

它可以工作,但需要永远我有超过10000件物品。 我正在使用asp classic和access,但我很确定问题与SQL有关

我试着用这个条款,其中。。。但查询将输出所有发票日期,而不仅仅是最新的发票日期

有什么帮助吗? 提前谢谢

我知道我一直都很普通。 下面是我尝试使用的SQL指令:

选择table1.id、table3.name、table1.name、table2.trans\u num、Maxtable2.transaction\u date\h作为MaxDitransaction\u date\h、table2.amount\u amt 从表3内部联接表1表1上的内部联接表2.id=表2.item\u id=表1.preferred\u vendor\u id 按table1.id、table3.name、table1.name、table2.trans\u num、table2.amount\u amount分组 按表3.name、表1.name、表2.trans\u num、Maxtable2.transaction\u date\u h DESC排序

如果我运行这个查询,结果就是整个记录集。
如前所述,我只想检索每个不同表1.id的前1个最新交易日期。如果您只需要项目id和最新发票日期,请使用简单聚合:

select itemId,
    max(InvoiceDate) as InvoiceDate
from invoices
group by itemId
如果您也需要项目详细信息,请将上述内容与项目表连接起来:

select i.*, i2.InvoiceDate
from item i
join (
    select itemId,
        max(InvoiceDate) as InvoiceDate
    from invoices
    group by itemId
    ) i2 on i.itemId = i2.itemId;
或:

select i.itemId,
    i.itemName,
    max(i2.InvoiceDate) as InvoiceDate
from item i
join invoices i2 on i.itemId = i2.itemId
group by i.itemId,
    i.itemName;