powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с запросом.
16 сообщений из 16, страница 1 из 1
Помогите с запросом.
    #34086289
webler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот есть в базе записи.

data tip active
700 10 true
700 34 false
710 45 true
... ... ...

мне нужно сделать обьединение строк.
чтобы результат мне выдал такой, в зависимости от active

data active noactive
700 10 34
710 45 0
... ... ...
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086305
webler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вторая таблица должна получится такая(чтобы не привязываться к названию active)

data active_num noactive_num
700 10 34
710 45 0
... ... ...
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086347
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для одной и той же data возможно только одна запись active=true и только одна с active=false? Это соблюдается?
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086356
webler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да.
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086358
Serik Akhmetov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pamirДля одной и той же data возможно только одна запись active=true и только одна с active=false? Это соблюдается?
для этого случая
Код: plaintext
1.
2.
3.
select t1.data, t1.tip as active, t2.tip as noactive
from table t1
left join table t2 on (t1.data = t2.data and t2.active = true)
where t1.active = false
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086499
webler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ERROR: syntax error at or near "table"

Как бы не работает...
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086502
webler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если поубирать table
то пишет

ERROR: relation "t2" does not exist
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086510
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну откуда мы знаем, как у вас таблица называется...
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086528
webler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pamirДля одной и той же data возможно только одна запись active=true и только одна с active=false? Это соблюдается?

Это вообще. А может и не быть какой то записи из этих двух. Тогда tip будет 0.
Я показал пример с data = 710. У этой записи active = true. И нету записи с data = 710 и active = false. Но в будущем возможно появится.

Обьяснил конечно путанно.
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086545
webler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pamirНу откуда мы знаем, как у вас таблица называется...

Сори, забыл. Таблица tips.
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086554
webler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заменил название таблицы. Все заработало. :)
Только 0 не пишет.
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086593
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
weblerЗаменил название таблицы. Все заработало. :)
Только 0 не пишет.Воспользуйтесь COALESCE...
Код: plaintext
select t1.data, coalesce(t1.tip, 0 ) as active, coalesce(t2.tip, 0 ) as noactive ...
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086615
webler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нули начало прописывать. coalesce нужная штука.
Но сам запрос странно составлен, пропускает строки.
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086620
webler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Показывает только те data где изначально active = false
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086670
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
weblerПоказывает только те data где изначально active = falseДело в том, что Вы изначально, подталкиваемые участником Serik Akhmetov, пошли неверным путем.
Вот так напишите свой запрос:
Код: plaintext
1.
2.
3.
4.
select data,
       sum(case when active = true then tip else  0  end) as active_num,
       sum(case when active = false then tip else  0  end) as noactive_num
  from tips
 group by data
и будет Вам счастье...
...
Рейтинг: 0 / 0
Помогите с запросом.
    #34086722
webler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна weblerПоказывает только те data где изначально active = falseДело в том, что Вы изначально, подталкиваемые участником Serik Akhmetov, пошли неверным путем.
Вот так напишите свой запрос:
Код: plaintext
1.
2.
3.
4.
select data,
       sum(case when active = true then tip else  0  end) as active_num,
       sum(case when active = false then tip else  0  end) as noactive_num
  from tips
 group by data
и будет Вам счастье...

СУПЕР. Сенк. Так работает именно так как нужно.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с запросом.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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