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

Откуда:
Сообщений: 258
MS SQL2005

есть два запроса

1.
select distinct  object, min(even.date) starttask  from even 
where even.object='{"O","0","0","434","0","0","   1121521   "}' and even.id_even=12 
group by object

2.
select distinct  object,  min(even.date) officeend  from even 
where even.object='{"O","0","0","434","0","0","   1121521   "}' and even.id_even=5 
group by object

хотелось бы объеденить их в один, а точней чтоб он вернул результат одной строчкой
т.е.
object, starttask , officeend

что то не пойму как это сделать, дайте господа проф. совет
22 июн 09, 15:44    [7329104]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с заспросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
А зачем там distinct ?
22 июн 09, 15:47    [7329138]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с заспросом  [new]
так наверна
Guest
SELECT ISNULL(a.object, b.object), a.starttask, b.officeend   
FROM
(select  object, min(even.date) starttask  from even 
where even.object='{"O","0","0","434","0","0","   1121521   "}' and even.id_even=12 
group by object) a
FULL JOIN
(select object,  min(even.date) officeend  from even 
where even.object='{"O","0","0","434","0","0","   1121521   "}' and even.id_even=5 
group by object) b
ON a.object = b.object
22 июн 09, 15:51    [7329171]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с заспросом  [new]
glyzin
Member

Откуда:
Сообщений: 258
не нужно, можно убрать
22 июн 09, 15:52    [7329182]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с заспросом  [new]
glyzin
Member

Откуда:
Сообщений: 258
спасибо а isnull шо такое?
22 июн 09, 15:53    [7329192]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с заспросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
glyzin
не нужно, можно убрать
Следующий вопрос:

А зачем group by object ?
22 июн 09, 15:54    [7329196]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с заспросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
glyzin
а isnull шо такое?
ISNULL (Transact-SQL)
22 июн 09, 15:56    [7329223]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с заспросом  [new]
glyzin
Member

Откуда:
Сообщений: 258
спасибо огромное, я так и думал что через join.

груп для того что ,много записей с таким ИД может быть. без него на макс функци. ругается.
22 июн 09, 15:57    [7329228]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с заспросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
glyzin
груп для того что ,много записей с таким ИД может быть. без него на макс функци. ругается.
Вы же знаете значение object которое будет во всех этих многих записях
glyzin
where even.object='{"O","0","0","434","0","0","   1121521   "}'...
Так не указывайте его в select вот и не будет ругаться
22 июн 09, 16:01    [7329280]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с заспросом  [new]
iljy
Guest
glyzin
спасибо огромное, я так и думал что через join.

груп для того что ,много записей с таким ИД может быть. без него на макс функци. ругается.


SELECT '{"O","0","0","434","0","0","   1121521   "}', a.starttask, b.officeend   
FROM
(select  min(even.date) starttask  from even 
where even.object='{"O","0","0","434","0","0","   1121521   "}' and even.id_even=12 
) a
CROSS JOIN
(select min(even.date) officeend  from even 
where even.object='{"O","0","0","434","0","0","   1121521   "}' and even.id_even=5 
) b

так не проще?
22 июн 09, 16:01    [7329283]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с заспросом  [new]
glyzin
Member

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

Откуда: Винница
Сообщений: 22552
glyzin
MS SQL2005
-- test data
declare @even table(object varchar(63), id_even int, date smalldatetime)
insert into @even(object, id_even, date)
select '{"O","0","0","434","0","0","   1121521   "}',  5, '20090615' union all
select '{"O","0","0","434","0","0","   1121521   "}', 12, '20090616' union all
select '{"O","0","0","434","0","0","   1121521   "}',  5, '20090617' union all
select '-------------------------------------------',  5, '20090615' union all
select '-------------------------------------------', 12, '20090616' union all
select '-------------------------------------------',  5, '20090617'
-- end of test data

declare @object varchar(63)
set @object = '{"O","0","0","434","0","0","   1121521   "}'

select object, [12] as starttask, [5] as officeend
  from @even
 pivot (min(date) for id_even in ([12], [5])) as pvt
 where object = @object

object                                                          starttask               officeend
--------------------------------------------------------------- ----------------------- -----------------------
{"O","0","0","434","0","0","   1121521   "}                     2009-06-16 00:00:00     2009-06-15 00:00:00

(1 row(s) affected)
22 июн 09, 16:13    [7329410]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить