首页 文章

(Access和VB.NET)查询:获取MAX()

提问于
浏览
0

我需要显示为每个客户保存的最后一个订单号

例:

TABLE: CUSTOMERS

ID_CUST | CUSTOMER
100 | JOHN
101 | MARY

TABLE: ORDERS

ID_ORDER  | NOTES | TOTAL | ID_CUST
1 | LOREM IPSUM | 100€ | 100
2 | PENDING  | 300€ | 100
3 | BLA BLA | 400€ | 101

如果我执行此查询:

Select CUSTOMERS.ID_CUST, CUSTOMERS.CUSTOMER, MAX(ORDERS.ID_ORDER)
FROM CUSTOMERS INNER JOIN ORDERS ON CUSTOMERS.ID_CUST=ORDERS.ID_CUST
GROUP BY CUSTOMERS.ID_CUST, CUSTOMERS.CUSTOMER

工作良好 . 结果:

100 | JOHN | 2
101 | MARY | 3

问题是我需要显示“注释”和“总数”字段 . 如果我运行这个:

Select CUSTOMERS.ID_CUST, CUSTOMERS.CUSTOMER, MAX(ORDERS.ID_ORDER), ORDERS.TOTAL, ORDERS.NOTES
FROM CUSTOMERS INNER JOIN ORDERS ON CUSTOMERS.ID_CUST=ORDERS.ID_CUST
GROUP BY CUSTOMERS.ID_CUST, CUSTOMERS.CUSTOMER,ORDERS.TOTAL, ORDERS.NOTES

结果不是我需要的[错误]:

100 | JOHN | 1 | LOREM IPSUM | 100€
100 | JOHN | 2 | PENDING | 300€ | 100
101 | MARY | 3 | BLA BLA | 400€

因为如果我不在“分组依据”中包含这两个字段“notes”和“total”,则查询返回错误:不包括指定的表达式作为聚合函数的一部分

UPDATE 1:

我从vb.net程序运行此查询

1 回答

  • 0

    保存您的第一个查询(qryCustLastOrderID) . 然后在qryCustLastOrderID.MaxOfID_Order = ORDERS.ID_Order上创建一个新查询(这是空中代码)SELECT qryCustLastOrderID . *,ORDERS.Notes FROM qryCustLastOrderID INNER JOIN ORDERS .

    如果你不想保存一个单独的查询,这里有一个替代(再次空气代码):SELECT Q1 . *,ORDERS.Notes FROM(选择CUSTOMERS.ID_CUST,CUSTOMERS.CUSTOMER,MAX(ORDERS.ID_ORDER)作为MaxOfID_Order FROM CUSTOMERS上的CUSTOMERS INNER JOIN ORDERS订单 . 来自CUSTOMERS.ID_CUST,CUSTOMERS.CUSTOMER的ORDERS.ID_CUST GROUP)Q1.MaxOfID_Order = ORDERS.ID_Order上的Q1 INNER JOIN ORDERS

相关问题