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

Откуда:
Сообщений: 6
таблица 1 - session
id - инкрементальный,
дата - date
time - int
...прочие данные


таблица 2 - breaks
session - int
break - int
value - int

запрос следующий - надо вытащить суммы sessions.time и Breaks.value с группировкой по дате

select sessions.date, SUM(sessions.time) as all_time
,SUM((select SUM(b1.value) from Breaks b1 where b1.session=sessions.id AND b1.break not in (select id from breaks_info where lunch=1))) as br_all
from sessions 
where date = '2011-06-02' 

возникает ошибка на статичную функцию в применении к подзапросу...

подскажите как можно переделать запрос. а точнее создать его...
22 июн 11, 23:44    [10858433]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
qwerty112
Guest
select 
  '2011-06-02',
--  sessions.date, 
  SUM(sessions.time) as all_time,
  SUM(a.xz) as br_all

from sessions 

inner join

  (select b1.session, SUM(b1.value) as xz from Breaks b1 
   where b1.break not in (select id from breaks_info where lunch=1)
   group by b1.session) a

on sessions.id=a.session

where sessions.date = '2011-06-02'

--group by sessions.date
23 июн 11, 00:04    [10858486]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Mak01
Member

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

спасибо, получилось, однако мне надо и sessions.date вытащить...

т.к это в этом примере
 where date = '2011-06-02' 

а так там различные условия будут
23 июн 11, 00:20    [10858523]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Mak01
Member

Откуда:
Сообщений: 6
qwerty112,
например
where date > '2011-06-01' AND date < '2011-06-28' 
23 июн 11, 00:27    [10858541]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Mak01
Member

Откуда:
Сообщений: 6
Всё.

спасибо, разобрался

select 
  sessions.date, 
  SUM(sessions.time) as all_time,
  SUM(a.x1) as br_all

from sessions 
left join
  (select b1.session, SUM(b1.value) as x1 from Breaks b1
   where b1.[break] not in (select id from breaks_info where lunch=1)
   group by b1.session) a
	on sessions.id=a.session


where date >= '2011-06-01' AND date < '2011-06-28' 

group by sessions.date
23 июн 11, 08:57    [10859025]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить