SQL Server последняя дата - PullRequest
       27

SQL Server последняя дата

2 голосов
/ 05 марта 2012

Есть ли возможность получить строку с самой высокой датой, не присоединяясь к той же таблице и используя max (date) ??Является ли порядок Top1 по desc допустимым параметром?

Я использую SQL Server 2000. И производительность важна.

edit:

Table1:

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 ]

1 голос
/ 05 марта 2012

Вот несколько упрощенный запрос, основанный на ваших изменениях.

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

Надеемся, что подподробный запрос будет выполняться немного быстрее, чем ваша текущая версия, поскольку он будет выполняться один раз для всего запроса, а неодин раз за часть стоимости.

1 голос
/ 05 марта 2012
SELECT TOP 1 columnlist
FROM table
ORDER BY datecol DESC 

, безусловно, является допустимым вариантом, если предположить, что ваши датаколы достаточно точны, чтобы вы могли получить необходимые результаты (другими словами, если это одна строка в день, и ваша дата отражает это, тогда обязательно. Если это несколько строкв минуту, вы можете быть недостаточно точными).

Производительность будет зависеть от вашей стратегии индексирования и аппаратного обеспечения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...