sql - 如何在 WHERE 条件中组合 MIN 和 MAX
问题描述
我有这个查询,它需要在给定特定描述的情况下找到一个 MAX 值
select * from SCA_FXDFWD_REP S
where S.M_TRADE_NUM in (SELECT MAX(S_AUX.M_TRADE_NUM)
FROM SCA_FXDFWD_REP S_AUX
WHERE S_AUX.M_ORIGIN_ID= S.M_ORIGIN_ID
AND S_AUX.M_SCA_DESC= 'ALTA'
GROUP BY S_AUX.M_SCA_ORIG, S_AUX.M_TRADE_DAT)
这很好用,但现在我需要添加另一个条件,该条件需要为另一个类似条件找到 de MIN:
SELECT * FROM SCA_FXDFWD_REP S
WHERE M_TRADE_NUM IN ((SELECT MIN(M_TRADE_NUM) FROM SCA_FXDFWD_REP S_AUX
where S_AUX.M_ORIGIN_ID = S.M_ORIGIN_ID
AND S_AUX.M_SCA_DESC= 'UTILIZACION'))
我已经尝试过AND
, OR
, UNION
, 和我所知道的所有类型的组合来组合这两个条件并获得何时MAX
何地没有运气,我通常会收到前缀 S 不匹配的错误,等等。DESC='ALTA'
MIN
DESC='UTILIZACION'
任何人都可以帮助结合这两个条件并同时获得 MIN 和 MAX 的最佳方法吗
谢谢,
解决方案
似乎您正在寻找max
andmin
为每个M_ORIGIN_ID
. 如果这是条件并且您的上述两个查询都给出了正确的输出,那么您可以在for和 forunion all
的基础上使用。M_ORIGIN_ID
max
min
select * from SCA_FXDFWD_REP S
where S.M_TRADE_NUM in (SELECT MAX(S_AUX.M_TRADE_NUM)
FROM SCA_FXDFWD_REP S_AUX
WHERE S_AUX.M_ORIGIN_ID= S.M_ORIGIN_ID
AND S_AUX.M_SCA_DESC= 'ALTA'
GROUP BY S_AUX.M_SCA_ORIG, S_AUX.M_TRADE_DAT)
union all
SELECT * FROM SCA_FXDFWD_REP S
WHERE M_TRADE_NUM IN ((SELECT MIN(M_TRADE_NUM) FROM SCA_FXDFWD_REP S_AUX
where S_AUX.M_ORIGIN_ID = S.M_ORIGIN_ID
AND S_AUX.M_SCA_DESC= 'UTILIZACION'))
推荐阅读
- reactjs - React App:Windows + Microsoft Edge 95 稳定版导致白屏显示“Rangeerror:超出最大调用堆栈大小”
- ros - BNO055 通过 rosserial 用 a4988 驱动器控制 Nema 17 步进电机
- python - 我如何检查有多少成员在线 discord.py
- python - 仅在填写整个单词时才断言
- amazon-web-services - 从 AWS 迁移到 Azure 时性能不佳
- python - 从类的可变数组继承时,有没有办法让 Python 代码完成工作?
- python - 在pygame中检测碰撞
- visual-c++ - 哪个类型库托管 stdDataFormat?
- python - 尝试使用 numpy.ndarray 时,Tensorflow Convert To Tensor 抛出异常
- bash - 如何以列的最后一个数字的增量连接文件的内容