SQL 选择查询,其中所有行必须具有相等的值

标签 sql mysql greatest-n-per-group

我需要从订单列表中生成账单。

我有一个查询,可以获取所有尚未付款的订单 (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/

相关文章:

sql - 仅授予用户存储过程权限

mysql - 如何根据列表框按升序减去

php - Codeigniter 和 'twice' 分组依据

sql - 查询显示各部门工资最低的员工

sql - 从另一个表中删除 ID 不匹配的 sql 行

mysql - 如何在没有值的字段上使用 MYSQL WHERE

php - 使用 PDO MySQL 插入 2 个表

sql - 优化 PostgreSQL 中的窗口函数以使用索引

mysql - 如何从具有多对多关系的表中选择最新记录

mysql - 如何在不删除重复值的情况下对数据集进行分组