powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, составить SQL-запрос
5 сообщений из 5, страница 1 из 1
Помогите, пожалуйста, составить SQL-запрос
    #32061019
rom900
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста, составить SQL-запрос.
Очень нужно.

Необходимо составить запрос, который поодсчитывает число записей для
каждого типа устройств по данной Атс в течении каждого дня месяца, после этого полученные записи
суммируются. Для примера возьмем 2 дня.

Запрос:

(select (case when a_data_gi.ats_tip='3-ГИ(ВУС)' then a_data_gi.ats_out else a_data_gi.ats_tip end)R23,(Count(a_data_general.device))R1,
'0' R2
from a_data_general, a_data_gi where (a_data_general.ats='21') and
(a_data_general.ats=a_data_gi.ats_in) and (a_data_general.d_in=a_data_gi.d_in)and
(a_data_general.d_stativ=a_data_gi.d_stativ)
and (a_data_general.device='3-ГИ') and (dt>='9.16.2002 9:00')
and (dt<='9.16.2002 18:00') group by a_data_gi.ats_tip,a_data_gi.ats_out Union All
select (case when a_data_gi.ats_tip='3-ГИ(ВУС)' then a_data_gi.ats_out else a_data_gi.ats_tip end)R23,'0'R1,
(Count(a_data_general.device))R2
from a_data_general, a_data_gi where (a_data_general.ats='21') and
(a_data_general.ats=a_data_gi.ats_in) and (a_data_general.d_in=a_data_gi.d_in)and
(a_data_general.d_stativ=a_data_gi.d_stativ) and
(a_data_general.device='3-ГИ') and (dt>='9.17.2002 9:00')
and (dt<='9.17.2002 18:00') group by a_data_gi.ats_tip,a_data_gi.ats_out)
, выполняется правильно и выдает результат:

3-ГИ(ВСС) 5 0
24 3 0
25 1 0
26 2 0
3-ГИ(ВСС) 0 3
24 0 5
29 0 2

Необходимо получить из этих данных такие:
3-ГИ(ВСС) 5 3
24 3 5
25 1 0
26 2 0
29 0 2
, т.е. суммировать данные по строчкам.

Если взять запрос:
select (case when a_data_gi.ats_tip='3-ГИ(ВУС)' then a_data_gi.ats_out else a_data_gi.ats_tip end),sum(R1),sum(R2) from a_data_gi,
(select (case when a_data_gi.ats_tip='3-ГИ(ВУС)' then a_data_gi.ats_out else a_data_gi.ats_tip end)R23,(Count(a_data_general.device))R1,
'0' R2
from a_data_general, a_data_gi where (a_data_general.ats='21') and
(a_data_general.ats=a_data_gi.ats_in) and (a_data_general.d_in=a_data_gi.d_in)and
(a_data_general.d_stativ=a_data_gi.d_stativ)
and (a_data_general.device='3-ГИ') and (dt>='9.16.2002 9:00')
and (dt<='9.16.2002 18:00') group by a_data_gi.ats_tip,a_data_gi.ats_out Union All
select (case when a_data_gi.ats_tip='3-ГИ(ВУС)' then a_data_gi.ats_out else a_data_gi.ats_tip end)R23,'0'R1,
(Count(a_data_general.device))R2
from a_data_general, a_data_gi where (a_data_general.ats='21') and
(a_data_general.ats=a_data_gi.ats_in) and (a_data_general.d_in=a_data_gi.d_in)and
(a_data_general.d_stativ=a_data_gi.d_stativ) and
(a_data_general.device='3-ГИ') and (dt>='9.17.2002 9:00')
and (dt<='9.17.2002 18:00') group by a_data_gi.ats_tip,a_data_gi.ats_out)
Tab group by a_data_gi.ats_tip,a_data_gi.ats_out
, выдает неправильный результат??

Где здесь в этом запросе ошибка? Как правильно написать данный запрос?
Если можно на данном запросе.

Структура таблицы a_data_gi:
ats_in char(10)
d_stativ char(10)
d_in char(10)
ats_out char(10)
ats_tip char(10)
Пример заполнения:
21 21 21
01 01 01
01 31 38
21 29 20
3-ГИ(ВСС) 3-ГИ(ВУС) 3-ГИ(ВУС)
Структура таблицы a_data_general(из нее подсчитываются записи по
device=3-ГИ) :
ats varchar(50)
dt datetime
device varchar(10)
uak_num smallint(2)
memo varchar(1)
R1 char(1)
R2 char(1)
....
R15 char(1)
R16 char(1)
d_stativ char(3)
d_in char(3)
status char(2)

Пример заполнения:
21
9.17.2002 18:00
3-ГИ
1
а
2
2
..
3
4
01
31
Ок
...
Рейтинг: 0 / 0
Помогите, пожалуйста, составить SQL-запрос
    #32061487
rom900
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста, составить SQL-запрос.
Очень нужно.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, составить SQL-запрос
    #32061599
Vit.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А может хранимую процедуру лучше сделать?
Уж больно сложный запрос да и не мобильный он.
(Вдруг устр-во добавится/исчезнет)
...
Рейтинг: 0 / 0
Помогите, пожалуйста, составить SQL-запрос
    #32061606
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
select r23,sum(r1),sum(r2) from (первый запрос) group by r23

разве не проходит?
...
Рейтинг: 0 / 0
Помогите, пожалуйста, составить SQL-запрос
    #32062511
rom900
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо за помощь, особенно VVG_. Ваш запрос подходит. Вообще, я подумал, можно решить данный запрос разными способами и он оказался не таким
сложным как я думал.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, составить SQL-запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]