Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Значение соседней ячейки, при выводе max(datetime)  [new]
S.T.
Member

Откуда:
Сообщений: 21
Есть имя, есть дата, и есть статус. Нужно выгрести последний статус на сегодняшний день:
Например
Иванов - 2012-10-31 12:48:07 - статус 1
Иванов - 2012-10-31 12:58:07 - статус 2
Иванов - 2012-10-31 12:08:07 - статус 3

использую name, max( datetime), state
group by name, state

- выводятся все так как груп бай стейт. как вывести только последний статус?
31 окт 12, 12:57    [13401783]     Ответить | Цитировать Сообщить модератору
 Re: Значение соседней ячейки, при выводе max(datetime)  [new]
Glory
Member

Откуда:
Сообщений: 104760
select top 1 order by datetime desc
31 окт 12, 13:06    [13401839]     Ответить | Цитировать Сообщить модератору
 Re: Значение соседней ячейки, при выводе max(datetime)  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
S.T.,

-- для любой версии sql сервера
SELECT 
    t1.[name]
    ,t1.[datetime]
    ,t1.[state]
FROM [таблица] t1   
    INNER JOIN  
        (   
        SELECT 
            name
            ,MAX([datetime]) AS sdate
            ,dateadd(day,datediff(day,(0),[datetime]),(0)) AS tdate  -- группировка по дням
        FROM [таблица]    
        GROUP BY name, dateadd(day,datediff(day,(0),[datetime]),(0))
        ) t2
    ON t1.[name] =t2.[name] AND t1.[datetime] = t2.sdate

-- для версии sql 2005 и выше    
SELECT
     tt.[name]
    ,tt.[datetime]
    ,tt.[state]
FROM 
    (    
    SELECT 
        t1.[name]
        ,t1.[datetime]
        ,t1.[state]
        ,ROW_NUMBER() OVER (PARTITION BY dateadd(day,datediff(day,(0),[datetime]),(0))
                            ORDER BY t1.[datetime] DESC) AS cn
    FROM [таблица] t1  
    ) tt
WHERE tt.cn =1  
31 окт 12, 13:13    [13401879]     Ответить | Цитировать Сообщить модератору
 Re: Значение соседней ячейки, при выводе max(datetime)  [new]
S.T.
Member

Откуда:
Сообщений: 21
Спасибо огромное, затупил немного)
31 окт 12, 14:36    [13402596]     Ответить | Цитировать Сообщить модератору
 Re: Значение соседней ячейки, при выводе max(datetime)  [new]
Добрый Э - Эх
Guest
Семь способов решения поставленной задачи.

З.Ы.
Может уже в F.A.Q. добавить этот вопрос? В неделю по семь раз поднимается...
31 окт 12, 18:55    [13404490]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить