powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Двойная выборка одного столбца
19 сообщений из 19, страница 1 из 1
Двойная выборка одного столбца
    #38676466
Klavnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, работаю с fb не первый день, но как подступиться к проблеме не понимаю.
В моем запросе требуется сделать двойную выборку одного и того же столбца таблицы, но в результате, чтобы этот столбец разбился на два.
То есть:
id num state val;152023.56;253045.56;352178.48;

В результате выборки должно получиться:
num val_state0 val_state1;52 23.5687.48;53 45.56 -

Поясняю пример:
требуется объединить строки с одинаковым num в одну строку, но чтобы val оказались в одной строке, по признаку state .
На ум пришло два варианта:
создать временный View, и в выборе осуществить присоединение по средствам join ;

создать процедуру с похожим запросом, и также осуществить присоединение.

Но оба варианта кажутся не изящными.

Всем заранее спасибо!
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38676483
СергейВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Klavnik,

case (), group by??
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38676486
Фотография zirra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Klavnik> требуется объединить строки с одинаковым /num/ в одну строку, но чтобы /val/ оказались в одной строке, по признаку /state/.
Код: sql
1.
2.
3.
4.
5.
6.
7.
select
  distinct t1.num,
  (select t2.val from tbl_x3 t2 where t2.num = t1.num and t2.state = 0),
  (select t3.val from tbl_x3 t3 where t3.num = t1.num and t3.state = 1),
  (select t4.val from tbl_x3 t4 where t4.num = t1.num and t4.state = 2)
from
  tbl_x3 t1



--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38676487
Klavnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СергейВП, ни разу не пользовался этими операторами :) Хорошо, попробую!
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38676502
СергейВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Klavnik,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
WITH TT AS
(SELECT  T.NUM,
  CASE T.STATE WHEN 0 THEN T.VAL ELSE 0 END AS VAL_STATE_0,
  CASE T.STATE WHEN 1 THEN T.VAL ELSE 0 END AS VAL_STATE_1
 FROM T1 T)
SELECT
TT.NUM,
CASE SUM(TT.VAL_STATE_0) WHEN 0 THEN '-' ELSE SUM(TT.VAL_STATE_0) END AS VALUE_STATE_0,
CASE SUM(TT.VAL_STATE_1) WHEN 0 THEN '-' ELSE SUM(TT.VAL_STATE_0) END AS VALUE_STATE_1
FROM TT
GROUP by 1
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38676919
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KlavnikВ результате выборки должно получиться:
num val_state0 val_state1;52 23.5687.48;53 45.56 -а 87.48 откуда взялись? и почему для num=53 в val_state1 стоит прочерк?
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38676943
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
roadsterа 87.48 откуда взялись? и почему для num=53 в val_state1 стоит прочерк?
Телепатирую, что это 78.48 на самом деле

zirra, забыл объявить t2, t3, t4 ;)
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38676949
Klavnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
roadster, в моем случае так может быть, поэтому заодно добавил такой случай в пример:)
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38676952
Klavnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fr0sT-Brutal, верно, опечатка налицо.
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38676957
Klavnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zirra, сообщаю:
>multiple rows in singleton select
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38676968
Klavnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СергейВП, ваше решение близко, но with я так понимаю используется в процедурах только, а у меня запрос без процедуры. Попытался адаптировать, получился такой запрос, результату которому не хватает только группировки.
SELECT
T.NUM,
CASE T.STATE WHEN 0 THEN T.VAL ELSE '-' END AS VAL_STATE_0,
CASE T.STATE WHEN 1 THEN T.VAL ELSE '-' END AS VAL_STATE_1
FROM TBL T
WHERE T.STATE= 0
OR T.STATE= 1

Группировку не получается сделать, хотя агрегаты применял.
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38676973
Klavnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, в теги забыл вставить код.
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38676975
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Klavnik,

WITH прекрасно работает без процедур. Озвучте версию FB
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38676985
Klavnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, версия 2.0
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38676994
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Klavnik,

там ещё не было WITH. Запрос Сергея ВП мжно переписать так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT
TT.NUM,
CASE SUM(TT.VAL_STATE_0) WHEN 0 THEN '-' ELSE SUM(TT.VAL_STATE_0) END AS VALUE_STATE_0,
CASE SUM(TT.VAL_STATE_1) WHEN 0 THEN '-' ELSE SUM(TT.VAL_STATE_0) END AS VALUE_STATE_1
FROM (
  SELECT  T.NUM,
    CASE T.STATE WHEN 0 THEN T.VAL ELSE 0 END AS VAL_STATE_0,
    CASE T.STATE WHEN 1 THEN T.VAL ELSE 0 END AS VAL_STATE_1
  FROM T1 T
) TT
GROUP by 1



Правильно ли он работает не смотрел, да и не думал об этом
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38677000
Klavnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, неправильно выводит, но идею понял!
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38677092
Klavnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, опечатка небольшая была в одном символе.
Всем спасибо за содействие, проблема решена!
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38677098
Фотография zirra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Klavnik> zirra, сообщаю:
>>multiple rows in singleton select
По выданным мне данным - всё работает правильно... :D

--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Двойная выборка одного столбца
    #38677108
Klavnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zirra, оу, пардон и вправду :]
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Двойная выборка одного столбца
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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