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

Откуда:
Сообщений: 107
Уважаемые знатоки, вопрос!
Идет выборка данных из разных таблиц. В одной из таблиц есть ключ с названием организации (nvarchar(200)), в другом ключе \ таблице - время когда в этой организации были сотрудники (datetime).
Мне нужно, чтобы в результате запроса были уникальные названия организаций (не дублировались), но при этом оставлялись последние записи по datetime. Другими словами нужны все данные, но если они дублируются по названию органзиации, то мне нужна инфа с последней "активностью". (sql2000)
27 май 09, 16:47    [7235933]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Askat
Member

Откуда:
Сообщений: 487
использую DISTINCT
27 май 09, 16:50    [7235959]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
where NOT EXISTS (Transact-SQL) "инфа по той же организации но с более поздней активностью"
27 май 09, 16:52    [7235972]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
syavik
Member

Откуда:
Сообщений: 107
Паганель
where NOT EXISTS (Transact-SQL) "инфа по той же организации но с более поздней активностью"

т.е. он мне выдаст именно последнюю запись за этот период?
27 май 09, 16:54    [7235994]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Roamer
Member

Откуда: г.Краснодар
Сообщений: 38
Скорее так:
SELECT Организация, MAX(Активность)
GROUP BY Организация
27 май 09, 16:55    [7236012]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
syavik
Member

Откуда:
Сообщений: 107
Askat
использую DISTINCT

К сожалению DISTINCT не сделает поправку на нужное (последнее) время =(
27 май 09, 16:56    [7236014]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
syavik
т.е. он мне выдаст именно последнюю запись за этот период?
какой еще период? в первоначальной постановке задачи никакого периода не было... Вы чего-то не договариваете
27 май 09, 16:56    [7236018]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
syavik
Member

Откуда:
Сообщений: 107
Паганель
syavik
т.е. он мне выдаст именно последнюю запись за этот период?
какой еще период? в первоначальной постановке задачи никакого периода не было... Вы чего-то не договариваете

В запросе я указываю период по этому datetime (1 месяц). Мне не нужно находить не уникальные записи по полю организация, а отсекать, показывая последние записи.
27 май 09, 16:59    [7236045]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104760
syavik
Паганель
syavik
т.е. он мне выдаст именно последнюю запись за этот период?
какой еще период? в первоначальной постановке задачи никакого периода не было... Вы чего-то не договариваете

В запросе я указываю период по этому datetime (1 месяц). Мне не нужно находить не уникальные записи по полю организация, а отсекать, показывая последние записи.

И что вам мешает это сделать ?
27 май 09, 17:02    [7236074]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
тогда придется "указать период" еще и в подзапросе

но если Вам нужно только 2 поля (до чего я сразу не додумался), то можете последовать совету Roamer
27 май 09, 17:02    [7236077]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
syavik
Member

Откуда:
Сообщений: 107
Паганель
тогда придется "указать период" еще и в подзапросе

но если Вам нужно только 2 поля (до чего я сразу не додумался), то можете последовать совету Roamer


У меня получился давольно емкий запрос, но в результате его выполнения всплывают двойные и более записи, они действительно должны там быть, но в статистике, которую я веду, должны быть записи в единичном варианте, и правильный вариант только тот, который был занесен в систему последний.
27 май 09, 17:08    [7236129]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104760
syavik
Паганель
тогда придется "указать период" еще и в подзапросе

но если Вам нужно только 2 поля (до чего я сразу не додумался), то можете последовать совету Roamer


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

И что же мы можем для вас сделать ?
С помощью постукивания в барабан впасть в транс и узнать что, откуда и в каком виде вы хотите получить для вашей статистики ?
27 май 09, 17:10    [7236153]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
syavik
Member

Откуда:
Сообщений: 107
Glory,

Вопрос-то собственно банален, возможно ли удалить дубли по одному "столбцу", оставляя "оригинал", который определяется максимальным значением по другому.
27 май 09, 17:18    [7236210]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
syavik
У меня получился давольно емкий запрос
увидеть его можно?
27 май 09, 17:20    [7236233]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
ну так сделайте вложеный запрос с отбором по MAX значению
27 май 09, 17:21    [7236239]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104760
syavik
Glory,

Вопрос-то собственно банален, возможно ли удалить дубли по одному "столбцу", оставляя "оригинал", который определяется максимальным значением по другому.

Ошибку в логике(!) вашего запроса можно удалить только использованием правильной логики
А правильная логика появляется от знаний того, как надо работать с множествами
27 май 09, 17:33    [7236326]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
iljy
Guest
select * from
    (
       select IdOrganization, max(DateActivity) from Activity
       where DateActivity between @BeginDate and @EndDate
    ) t1
  join
    Organizations t2
  on t1.IdOrganization = t2.Id
27 май 09, 17:34    [7236329]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
syavik
Member

Откуда:
Сообщений: 107
Ответ этот:

select t1.*
from tbl t1
left outer join tbl t2
on t1.ID=t2.ID
and t2.date>t1.date

where t2.date is null

Он логичен, но почему-то у меня не срабатывает. Может мне как-то переконвертировать дату надо?
10 июн 09, 13:26    [7285487]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Roamer
Member

Откуда: г.Краснодар
Сообщений: 38
А так:
select distinct t1.* 
from tbl t1
left outer join tbl t2 
on t1.ID=t2.ID 
and t2.date>t1.date
where t2.date is null
10 июн 09, 14:15    [7285772]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить