powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Left Join в цикле
7 сообщений из 7, страница 1 из 1
Left Join в цикле
    #39895451
dimonovych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Можно ли задействовать (и как) в цикле Left Join?

Код: sql
1.
2.
3.
4.
SELECT *
  FROM      (SELECT f1, f2 FROM tbl1 WHERE f3 = '2018') AS t1 
  LEFT JOIN (SELECT f1, f2 FROM tbl1 WHERE f3 = '2019') AS t2 ON t2.f1 = t1.f1
  LEFT JOIN (SELECT f1, f2 FROM tbl1 WHERE f3 = '2020') AS t3 ON t3.f1 = t1.f1



Хочу сделать что то на подобии

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DECLARE @yr AS INT = 2018

SELECT *
  FROM  (SELECT f1, f2 FROM tbl1 WHERE f3 = @yr) AS t1 

WHILE @yr <= YEAR(GETDATE())+1
 BEGIN
   SET @yr = @yr + 1
   LEFT JOIN (SELECT f1, f2 FROM tbl1 WHERE f3 = @yr) ON f1 = t1.f1
END



но такое не проходит.
можно как то динамически задавать количество джоийнов?

Спасибо.
...
Рейтинг: 0 / 0
Left Join в цикле
    #39895465
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimonovych
можно как то динамически задавать количество джоийнов?
Сформировать запрос как строку, а потом эту строку выполнить.
...
Рейтинг: 0 / 0
Left Join в цикле
    #39895469
dimonovych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтоб было более понятно
Есть
f1 f2 f31 some data1 20182 some data1 20183 some data1 20181 some data2 20192 some data2 20193 some data2 20191 some data3 20202 some data3 20203 some data3 2020

Нужно


f1 f2 f3 f1 f2 f3 f1 f2 f31 some data1 2018 1 some data2 20191 some data3 20202 some data1 2018 2 some data2 20192 some data3 20203 some data1 2018 3 some data2 20193 some data3 2020
...
Рейтинг: 0 / 0
Left Join в цикле
    #39895506
iiyama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimonovych,

ищите по слову PIVOT
вопрос всплывает каждую неделю по 3 раза
...
Рейтинг: 0 / 0
Left Join в цикле
    #39895531
dimonovych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iiyama
dimonovych,

ищите по слову PIVOT
вопрос всплывает каждую неделю по 3 раза


Искал.
Насколько я понял PIVOT может сделать так:

f1 f2 2018 2019 2020 1 some data15055602 some data160 50403 some data1404550

Как с его помощью получить мой варпиант - я не нашел
...
Рейтинг: 0 / 0
Left Join в цикле
    #39895533
dimonovych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg
dimonovych
можно как то динамически задавать количество джоийнов?
Сформировать запрос как строку, а потом эту строку выполнить.

Спасибо.
Пока так и сделал.
...
Рейтинг: 0 / 0
Left Join в цикле
    #39895538
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
select 
  -- 2018
  f1 
  , f2 =  max(case f3 when 2018 then f2 end)
  , f3 =  max(case f3 when 2018 then f3 end)

  --2019
  , f1 
  , f2 =  max(case f3 when 2019 then f2 end)
  , f3 =  max(case f3 when 2019 then f3 end)

  --2020
  , f1 
  , f2 =  max(case f3 when 2020 then f2 end)
  , f3 =  max(case f3 when 2020 then f3 end)
from ... 
group by  f1
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Left Join в цикле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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