我需要显示为每个客户保存的最后一个订单号
例:
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 回答
保存您的第一个查询(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