SQL Server последняя дата
Есть ли возможность получить строку с самой высокой датой, не присоединяясь к той же таблице и использовать max(date)?? Является ли заказ Top1 по desc допустимым вариантом?
Я использую SQL Server 2000. И производительность важна.
редактировать:
Таблица 1:
columns: part - partdesc
Таблица 2:
columns: part - cost - date
select a.part,partdesc,b.cost
left join( select cost,part
right join(select max(date),part from table2 group by part) maxdate ON maxdate.date = bb.date
from table2 bb ) b on b.part = a.part
from table1
Я не знаю, работает ли приведенный выше код, но этот запрос мне не нравится. И кажется мне неэффективным.
2 ответа
Вот несколько упрощенный запрос, основанный на ваших изменениях.
SELECT
a.part,
a.partdesc,
sub.cost
FROM
Table1 A
INNER JOIN
(SELECT
B.part,
cost
FROM
Table2 B
INNER JOIN
(SELECT
part,
MAX(Date) as MaxDate
FROM
Table2
GROUP BY
part) BB
ON bb.part = b.part
AND bb.maxdate = b.date) Sub
ON sub.part = a.part
Надеемся, что подподробный запрос будет выполняться немного быстрее, чем ваша текущая версия, поскольку он будет выполняться один раз для всего запроса, а не один раз для значения части.
SELECT TOP 1 columnlist
FROM table
ORDER BY datecol DESC
безусловно, является допустимым вариантом, если предположить, что ваши датаколы достаточно точны, чтобы вы могли получить необходимые результаты (другими словами, если это одна строка в день, и ваша дата отражает это, тогда обязательно. Если это несколько строк в минуту, вы не можете быть достаточно точным).
Производительность будет зависеть от вашей стратегии индексирования и аппаратного обеспечения.