如何解决在内部联接上查找最大值-SQL
我有一个临时表,我们称其为#order,在此表中有多个订单历史记录的更改记录。
我希望看到在上例中or_chgn
列的最大值,其中对订单文件进行了所有更改。
但是,当我编写查询时,得到的结果是错误的。
查询
SELECT *
FROM t.#ORDER
INNER JOIN (
SELECT OR_ORDN,max(OR_CHGN) OR_CHGN
FROM t.#ORDER
GROUP BY OR_ORDN
) d
ON t.OR_ORDN = d.OR_ORDN
and t.OR_CHGN = d.OR_CHGN
消息:
Msg 4104,Level 16,State 1,Line 16 The multi-part identifier "t.OR_ORDN" could not be bound. Msg 4104,Line 17 The multi-part identifier "t.OR_CHGN" could not be bound.
我在这里想念什么?
解决方法
您需要在外部查询的class MyClass:
@classmethod
def cleanOnExit(cls):
# do here your cleaning
import atexit ; atexit.register(MyClass.cleanOnExit)
子句中声明别名t
,以便可以在from
的{{1}}子句中引用它。 / p>
由于看起来您的架构已被称为ON
,所以我正在更改别名以使内容更清楚:
JOIN
解决此每组最大n个问题的另一种常用方法是使用相关子查询,从而以某种方式简化了查询:
t
此查询将利用SELECT *
FROM t.#ORDER o --> here
INNER JOIN (
SELECT OR_ORDN,max(OR_CHGN) OR_CHGN
FROM t.#ORDER
GROUP BY OR_ORDN
) omax ON omax.OR_ORDN = o.OR_ORDN AND omax.OR_CHGN = o.OR_CHGN
上的索引。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。