我需要显示为每位客户保存的最后一个订单号
示例:
表:客户
ID_CUST | CUSTOMER
100 | JOHN
101 | MARY
表:订单
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",在" Group By"中,查询返回错误:不包括指定的表达式作为聚合函数的一部分
更新1:
我正在从vb.net程序运行此查询
答案 0 :(得分:0)
保存您的第一个查询(qryCustLastOrderID)。然后创建一个新查询(这是空中代码)SELECT qryCustLastOrderID。*,ORDERS.Notes FROM qryCustLastOrderID INNER JOIN ORDERS on qryCustLastOrderID.MaxOfID_Order = ORDERS.ID_Order。
如果您不想保存单独的查询,可以选择以下方式(再次使用空气代码): SELECT Q1。*,ORDERS.Notes FROM (选择CUSTOMERS.ID_CUST,CUSTOMERS.CUSTOMER,MAX(ORDERS.ID_ORDER)作为MaxOfID_Order 来自CUSTOMERS.ID_CUST = ORDERS.ID_CUST的客户INNER JOIN ORDERS GROUP BY CUSTOMERS.ID_CUST,CUSTOMERS.CUSTOMER)Q1内部联接订单在Q1.MaxOfID_Order = ORDERS.ID_Order