powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с LEFT JOIN
5 сообщений из 5, страница 1 из 1
Помогите с LEFT JOIN
    #32007539
RoKo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуй, All!
Вот, возникла проблема на работе.
Существует 2 таблицы:

1-я таблица:

123456 | 01.01.2001 | 123
123457 | 01.01.2001 | 124
123458 | 01.01.2001 | 125
123459 | 02.01.2001 | 126

2-я таблица:

01.01.2001 | 123 | Текст1
01.01.2001 | 123 | Текст2
01.01.2001 | 123 | Текст3
01.01.2001 | 124 | Текст1
01.01.2001 | 125 | Текст1
01.01.2001 | 125 | Текст2
02.01.2001 | 126 | Текст1
02.01.2001 | 126 | Текст2

2-е и 3-е поля в первой таблице
связаны с 1-м и 2-м полями во второй.
Необходимо получить следующую таблицу:

123456 | 01.01.2001 | 123 | Текст1+Текст2+Текст3
123457 | 01.01.2001 | 124 | Текст1
123458 | 01.01.2001 | 125 | Текст1+Текст2
123459 | 02.01.2001 | 126 | Текст1+Текст2

т.е., необходимо сделать LEFT JOIN, но с
конкатенацией значений в 3-м поле 2-й таблицы.
Сделать это нужно в SP, и, неплохо, если бы
это быстро работало

Заранее огромное спасибо!
...
Рейтинг: 0 / 0
Помогите с LEFT JOIN
    #32007547
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предлагаю использовать функцию.
SELECT ID, Date, Number, MyFunc FROM Table LEFT JOIN
А в теле функции открыть курсор с нужным запросом.
Путь конечно не самый быстрый, но это то что сразу в голову пришло.
Может другие участники форума что-либо более интересное подскажут?
...
Рейтинг: 0 / 0
Помогите с LEFT JOIN
    #32007567
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 RoKo
Вот так в лоб одним селектом это сделать невозможно в принципе.
Можно сделать или перебирая по записи в цикле или, как предложил, Slava написать функцию. Если порядок(Текст1+Текст2 или Текст2+Текст1) не важен она пишется без курсоров в 5 строчек(используя конструкцию select @t=@t+txt from tbl). Ну и в результате будет будет селект из первой таблицы, конечно, без всяких жоинов:
SELECT ID, Date, Number, dbo.MyFunc(Date, Number) FROM Table1
...
Рейтинг: 0 / 0
Помогите с LEFT JOIN
    #32007609
Если во 2-й таблице есть поле LineNum (номер строки) и количество строк ограничено, то эффективный способ:


select t1.id,
t1.date,
MAX(CASE WHEN t2.LineNUM=1 THEN t2.Txt END)+
MAX(CASE WHEN t2.LineNUM=2 THEN t2.Txt END)+...
from t1 left outer join t2 on (t1.Date=t2.Date and ...)
group by t1.id,t1.date,...
...
Рейтинг: 0 / 0
Помогите с LEFT JOIN
    #32007636
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вчера только вопрос возник что будет содержать переменная при select @T = Field from Table. Думали, думали, эксперимент не успели провести. SergSuper ответил. Зашибись!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с LEFT JOIN
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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