Мне нужна ваша помощь. Мне нужно построить оператор динамического объединения SQL. (Или хранимая процедура)
В TableA1 хранятся значения моих параметров SQL. Например:
ID | Name
1 | 16
2 | 23
3 | 30
В TableB1 хранятся все остальные значения. Но мне нужно для каждой строки в таблице A1 объединение
Например:
Select b.* from TableB1 b
join TableA1 a on a.ID = b.ID
where b.ID = 1
union
Select b.* from TableB1
join TableA1 a on a.ID = b.ID
where b.ID = 2
Поскольку таблица A1 является динамической, невозможно создать статический union-sql. Помогите мне, пожалуйста. Могу ли я сделать это, возможно, с помощью: cte WITH ?
С уважением рф
Второе объяснение: я постараюсь сделать свое объяснение более понятным. Извините за мой первый вопрос. Я вижу, это было не правильно.
Мне нужно динамическое объединение (или что-то еще) из-за дизайна таблицы TableB1. Значения хранятся каждый месяц/год в горизонтальном порядке.
Пример TableB1:
date | xxxx | ID1 | ID2 | ID3 | ID4 ... 2014-07 | n | 20 | 30 | 40 | 2014-08 | n | 40 | 50 | 70 |
Вывод должен выглядеть так:
TableB1.date | TableA1.ID | TableA1.Name | TableB1.ID x | 2014-07 | 1 | 16 | 20 2014-08 | 1 | 16 | 40 2014-07 | 2 | 23 | 30 2014-08 | 2 | 23 | 50 2014-07 | 3 | 30 | 40 2014-08 | 3 | 30 | 70
Я думал, что помещу sql в хранимую процедуру, потому что для каждого объединения мне нужно изменить синтаксис SQL, чтобы получить правильный столбец.
Возможно, мне нужно сначала создать хранимую процедуру unpivot. У вас есть идеи, как я могу сделать это в Firebird?
Select b.* from TableB1 b join TableA1 a on a.ID = b.ID
? - person StevieG   schedule 18.08.2014