Мне нужно объединить одну таблицу с 2 параметрами, чтобы показать состояние последнего обновления сведений, чтобы проверить окончание / текущий с MAX (...) / MIN (...). Что я могу сделать для этого?
Я попытался LEFT JOIN, но он возвращается к нулю
SELECT a.showonly
, a.want_this_parameter_lastdate
, min(a.xdate) start
, max(a.xdate) stop
, b.lastdate
FROM samedatabase a
LEFT JOIN (SELECT xdate lastdate
, want_this_parameter_lastdate
FROM samedatabase
WHERE ROWNUM = 1
ORDER BY xdate DESC) b
ON a.want_this_parameter_lastdate = b.want_this_parameter_lastdate
WHERE something IN (SELECT DISTINCT equalsomething
FROM another WHERE input like '...')
AND xdate> sysdate - 7
GROUP BY a.showonly, a.want_this_parameter_lastdate, b.lastdate
ORDER BY start ASC;
после запроса я получаю это
showonly|want_this_parameter|start |stop |lastdate
a1 |b1* |5/7/19 |6/7/19 |(null)
a2 |b2** |6/7/19 |7/7/19 |(null)
a3 |b1* |7/7/19 |8/7/19 |(null)
a4 |b2** |9/7/19 |10/7/19|(null)
a5 |b4 |10/7/19|11/7/19|(null)
Я ожидал, что ( стоп - это последний b1, использованный в a1, lastdate - последний b1, использованный во всей таблице)
showonly|want_this_parameter|start |stop |lastdate
a1 |b1* |5/7/19 |6/7/19 |12/17/19--Last B1 used
a2 |b2** |6/7/19 |7/7/19 |11/17/19--Last B2 used
a3 |b1* |7/7/19 |8/7/19 |12/17/19--Last B1 used
a4 |b2** |9/7/19 |10/7/19|12/17/19--Last B2 used
a5 |b4 |10/7/19|11/7/19|12/17/19--Last B4 used
*Same b1
**Same b2
UPDATE
Я, наконец, получил это, но все еще беспокоюсь о времени, чтобы запросить производительность
потому что MAX (...) получит всю таблицу правильно?
Как я могу улучшить эту производительность.
SELECT a.showonly
, a.want_this_parameter_lastdate
, min(a.xdate) start
, max(a.xdate) stop
, b.lastdate
FROM samedatabase a
LEFT JOIN (SELECT MAX(xdate) lastdate, want_this_parameter_lastdate
FROM samedatabase
GROUP BY want_this_parameter_lastdate) b
ON a.want_this_parameter_lastdate = b.want_this_parameter_lastdate
WHERE something IN (SELECT DISTINCT equalsomething
FROM another
WHERE input like '...')
AND xdate> sysdate - 7
GROUP BY a.showonly, a.want_this_parameter_lastdate, b.lastdate
ORDER BY start ASC;