我遇到这种情况的问题,我的日志表有许多不同条件的相同ID。我想从中选择两个最大条件。我试过但它只显示一条记录,而不是表格中的每条记录
这是我的记录表:
order_id seq status
____________________
1256 2 4
1256 1 2
1257 0 2
1257 3 1
这是我的代码:
WITH t AS(
SELECT x.order_id
,MAX(y.seq) AS seq2
,MAX(y.extern_order_status) AS status
FROM t_order_demand x
JOIN t_order_log y
ON x.order_id = y.order_id
where x.order_id like '%12%'
GROUP BY x.order_id)
SELECT *
FROM t
WHERE (t.seq2 || t.status) IN (SELECT MAX(tt.seq2 || tt.status) FROM t tt);
这个查询有效,但有时它给出了错误的值或只是显示一些记录,而不是每个记录。
我希望结果是这样的:
order_id seq2 status
____________________
1256 2 4
1257 3 2
答案 0 :(得分:1)
我认为你只想要一个聚合:
select d.order_id, max(l.seq2) as seq2, max(l.status) as status
from t_order_demand d join
t_order_log l
on d.order_id = l.order_id
where d.order_id like '%12%'
group by d.order_id;
我不确定你的最终where
条款应该做什么,但与你想要的相比,它似乎做了不必要的过滤。