为什么这个查询会返回错误?
select CUSTOMER, TOTAL_VALUE
from CUSTOMER, SALES
where TOTAL_VALUE in (select max(TOTAL_VALUE), min(TOTAL_VALUE)
from SALES)
当我只做max(TOTAL_VALUE)或min(TOTAL_VALUE)时,它完美无缺。但我需要在TOTAL_VALUE中获取最小数字,在TOTAL_VALUE中获取最大数字。任何人都可以帮我弄清楚为什么这个查询对我不起作用?我想保留我拥有的结构(使用in运算符和嵌套子查询)
答案 0 :(得分:1)
它返回一个错误,因为子查询返回两个值,而不是一个。这是一个修复:
select CUSTOMER, TOTAL_VALUE
from CUSTOMER cross join
SALES join
(select max(TOTAL_VALUE) as maxt, min(TOTAL_VALUE) as mint
from sales
) sm
where s.total_value in (sm.maxt, sm.mint);
那就是说,查询毫无意义。在那里,您将获得每个客户的清单以及总体最小和最大销售额的值。
这确实回答了你的问题。如果您有其他问题,请在另一个问题中提供样本数据,所需结果。
答案 1 :(得分:0)
试试这个(加入SALES和CUSTOMER表):
select C.CUSTOMER, MIN(TOTAL_VALUE), MAX(TOTAL_VALUE)
from SALES S
join CUSTOMER C on S.Customer_ID=C.Customer_ID
group by C.CUSTOMER
order by C.CUSTOMER