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

Откуда:
Сообщений: 4
есть таблица:

id_persona zp_persona data_zp

1 100 10.09.2011
1 0 10.10.2011
2 150 10.09.2011
2 120 10.10.2011
3 80 10.09.2011
3 0 10.10.2011

нужно сделать выборку для каждого id_persona так чтобы zp_persona<>0 и data_persona максимальна
т.е. в итоге должна быть выборка

id_persona zp_persona data_zp

1 100 10.09.2011
2 120 10.10.2011
3 80 10.09.2011
16 авг 11, 13:44    [11126208]     Ответить | Цитировать Сообщить модератору
 Re: Учусь. Помогите с несложным запросом.  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
b22, и что именно не получается?
16 авг 11, 13:49    [11126248]     Ответить | Цитировать Сообщить модератору
 Re: Учусь. Помогите с несложным запросом.  [new]
-|-
Guest
b22,

select id_persona, max(data_zp) maxd
from t
where zp_persona<>0
group by id_persona
16 авг 11, 13:54    [11126288]     Ответить | Цитировать Сообщить модератору
 Re: Учусь. Помогите с несложным запросом.  [new]
b22
Member

Откуда:
Сообщений: 4
kDnZP
b22, и что именно не получается?


-|-
b22,

select id_persona, max(data_zp) maxd
from t
where zp_persona<>0
group by id_persona


вот так я вытаскиваю записи какие нужны... а если добавить в выборку zp_persona, т.к. в этом и смысл, чтоб вытащить последнюю актуальную сумму зп сотрудника
16 авг 11, 14:04    [11126352]     Ответить | Цитировать Сообщить модератору
 Re: Учусь. Помогите с несложным запросом.  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
b22, ну дык и приджойнте подзапрос:
SELECT  t2.*
FROM    ( SELECT    id_persona,
                    MAX(data_zp) maxd
          FROM      t
          WHERE     zp_persona <> 0
          GROUP BY  id_persona
        ) t1
JOIN    t t2
ON      t1.id_persona = t2.id_persona
        AND t1.maxd = t2.data_zp
Можно иначе написать, если версия сервера позволяет.
16 авг 11, 14:09    [11126403]     Ответить | Цитировать Сообщить модератору
 Re: Учусь. Помогите с несложным запросом.  [new]
b22
Member

Откуда:
Сообщений: 4
kDnZP
b22, ну дык и приджойнте подзапрос:
SELECT  t2.*
FROM    ( SELECT    id_persona,
                    MAX(data_zp) maxd
          FROM      t
          WHERE     zp_persona <> 0
          GROUP BY  id_persona
        ) t1
JOIN    t t2
ON      t1.id_persona = t2.id_persona
        AND t1.maxd = t2.data_zp
Можно иначе написать, если версия сервера позволяет.


спс)) ну что то вот все немного не хватало для решения... еще раз спс
16 авг 11, 14:37    [11126602]     Ответить | Цитировать Сообщить модератору
 Re: Учусь. Помогите с несложным запросом.  [new]
-|-
Guest
b22
kDnZP
b22, и что именно не получается?


-|-
b22,

select id_persona, max(data_zp) maxd
from t
where zp_persona<>0
group by id_persona


вот так я вытаскиваю записи какие нужны... а если добавить в выборку zp_persona, т.к. в этом и смысл, чтоб вытащить последнюю актуальную сумму зп сотрудника


sql>2000

select id_persona, zp_persona,
max(data_zp) over(partition by id_persona) maxd
from t
where zp_persona<>0
16 авг 11, 15:13    [11126919]     Ответить | Цитировать Сообщить модератору
 Re: Учусь. Помогите с несложным запросом.  [new]
-|-
Guest
select id_persona, zp_persona,
max(data_zp) over(partition by id_persona) maxd
from t
where zp_persona<>0[/quot]

fignu odnako ya smorozil)))
16 авг 11, 15:18    [11126981]     Ответить | Цитировать Сообщить модератору
 Re: Учусь. Помогите с несложным запросом.  [new]
-\-
Guest
select top 1 with ties *
from @t
where zp_persona<>0  
order by row_number() over(partition by id_persona order by data_zp desc)
16 авг 11, 16:15    [11127622]     Ответить | Цитировать Сообщить модератору
 Re: Учусь. Помогите с несложным запросом.  [new]
b22
Member

Откуда:
Сообщений: 4
-\-
select top 1 with ties *
from @t
where zp_persona<>0  
order by row_number() over(partition by id_persona order by data_zp desc)


спс) на столько sql я не знаю ( , но это решение разберу
16 авг 11, 16:50    [11127900]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить