我需要从订单列表中生成账单。
我有一个查询,可以获取所有尚未付款的订单 (paid_date = null),但问题是某些订单具有不同的税码。现在,我只能在该查询中合并具有相同税码的订单。
我正在考虑类似下面的事情,但这显然行不通:
SELECT * from orders
WHERE paid_date IS NULL AND tax_code = MAX(tax_code);
几乎就像一个逆 Distinct。
更新:
抱歉,我想问题没有说清楚。我不是在寻找税码。我正在寻找具有相同税码的订单列表。但我不在乎它是什么代码。这实际上只是一种安全措施,通常所有税码都是相同的,但在极少数情况下它们是不同的。在这种情况下,用户需要生成 2 个单独的账单。
有什么简单的想法吗?
最佳答案
您将需要标识除税码之外一致的另一列,例如,customer_ID(例如);
获取当前客户的tax_codes列表:
SELECT customer_ID, tax_code
FROM Orders
WHERE customer_ID = 'some customer ID'
GROUP BY customer_ID, tax_code
上面的查询将返回不同行的数量,因此如果有2个tax_codes; 那么你得到2行,需要生成2张账单;
然后您可以按照其他人所示进行查询:
SELECT * FROM Orders
WHERE paid_date IS NULL
AND tax_code = 'first tax code from your first query'
这将涉及多次前往数据库。或者,您可以编写一个存储过程,利用临时表并返回多个集(多个 SELECT 语句),每个集包含按tax_code 排列的订单表格列表。
或者,如果您使用 SQL(不了解 MySQL),您可以编写 SQL XML 查询,该查询将按 customer_id 和tax_code 返回分层数据。
这有帮助吗?
关于SQL 选择查询,其中所有行必须具有相等的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4808423/