首页 文章

使用查询结果作为另一个查询的参数

提问于
浏览
0

我有两张 table :

table1:item(itemId,itemName)

table2:发票(InvoiceId,InvoiceNum,InvoiceDate,ItemId..etc)(其他列不相关) .

我需要找到一个不同的项目,即最新(也是最新的)发票日期 . 到目前为止,我在第一个表上创建了第一个不同的查询,然后,对于每个结果,我在第二个表上运行一个新查询(按日期desc排序的前1个)

它有效,但它需要永远(我有超过10000项) . 我正在使用asp经典和访问,但我很确定该问题与SQL有关 .

我尝试使用子句 WHERE ... IN ,但查询输出所有发票日期,而不仅仅是最新的发票日期 .

有帮助吗? Thx提前!

我明白我一直非常通用 . 这是我尝试使用的SQL指令:

SELECT table1.id,table3.name,table1.name,table2.trans_num,Max(table2.transaction_date_h)AS MaxDitransaction_date_h,table2.amount_amt FROM table3 INNER JOIN(table1 INNER JOIN table2 ON table1.id = table2.item_id)on table3 . id = table1.preferred_vendor_id GROUP BY table1.id,table3.name,table1.name,table2.trans_num,table2.amount_amt ORDER BY table3.name,table1.name,table2.trans_num,Max(table2.transaction_date_h)DESC;

如果我运行此查询,结果是整个记录集 . 如上所述,我想只为每个不同的table1.id检索前1个最新的transaction_date_h

1 回答

  • 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;
    

相关问题