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

У меня есть к Вам вопрос.
Вернее трудный "для меня" запрос.

Есть 2 таблицы:
table1
-------
id int
.....
-------

table2
-------
id int
number int
-------

Мне нужно получить список всех id из table1 с указанием суммы всех number'ов для этого id, удовлетворяющих правилам
rule 1
number like '8%' and not like '810%'
rule 2
number like '810%'
rule 3
number not like '8%'
Вот нужные мне столбцы
id, sum(number_rule1), sum(number_rule3), sum(number_rule3)

вот такой ужасный запрос.
Помогите кто может. Я исчерпал все свои знания.

Заранее спасибо.

Андрей.
...
Рейтинг: 0 / 0
Ну очень хитрый запрос.
    #32061181
Фотография Luchkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rule 1
number like '8%' and not like '810%'
rule 2
number like '810%'
rule 3
number not like '8%'
Вот нужные мне столбцы
id, sum(number_rule1), sum(number_rule2), sum(number_rule3)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select t1.id, sum(tt1.number), sum(tt2.number), sum(tt3.number)
from table1 t1
left join table2 tt1 on (t1.id = tt1.id)
left join table2 tt2 on (t1.id = tt2.id)
left join table2 tt3 on (t1.id = tt3.id)
group by t1.id
where 
tt1.number like '8%' and not tt1.number like '810%' 
and tt2.number like '810%'
and tt3.number not like '8%'
наверное как-то так... если и ошибся, то в мелочи ;-)  /лень пробовать/
...
Рейтинг: 0 / 0
Ну очень хитрый запрос.
    #32061182
Kirk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Совсем тупо если, то
select id,
(select sum(number) from t2 where t1.id=t2.id and number like '8%' and not like '810%') as rule1,
(select sum(number) from t2 where t1.id=t2.id and number like '810%') as rule2,
(select sum(number) from t2 where t1.id=t2.id and number not like '8%') as rule3 from t1
...
Рейтинг: 0 / 0
Ну очень хитрый запрос.
    #32061185
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select 
a.id, sum(a.number_rule1), sum(a.number_rule2), sum(a.number_rule3)  from
(
select id, sum(number) as number_rule1,  0  as number_rule2,  0  as number_rule3 from table2 
where number like '8%' and not like '810%'  -- rule 1
 
union
select id,  0  as number_rule1, sum(number) as number_rule2,  0  as number_rule3 from table2 
where number like '810%'  -- rule 2
 
union
select id,  0  as number_rule1,  0  as number_rule2, sum(number) as number_rule3 from table2 
where number not like '810%'  -- rule 3
 
) a group by a.id
...
Рейтинг: 0 / 0
Ну очень хитрый запрос.
    #32061190
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут что, конкурс - кто тупее!? :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select 
  t1.id,
  SUM(CASE WHEN t2.number like '8%' and not like '810%' THEN t2.number ELSE  0  END),
  SUM(CASE WHEN t2.number like '810%' THEN t2.number ELSE  0  END),
  SUM(CASE WHEN t2.number not like '8%' THEN t2.number ELSE  0  END)
from table1 t1
  left join table2 t2 on t2.id = t1.id
group by t1.id
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ну очень хитрый запрос.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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