Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
dimonovych Member Откуда: Сообщений: 17 |
Здравствуйте. Можно ли задействовать (и как) в цикле Left Join? 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 Хочу сделать что то на подобии 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 но такое не проходит. можно как то динамически задавать количество джоийнов? Спасибо. |
28 ноя 19, 11:22 [22027411] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31779 |
|
||||
28 ноя 19, 11:38 [22027435] Ответить | Цитировать Сообщить модератору |
dimonovych Member Откуда: Сообщений: 17 |
Чтоб было более понятно Есть
Нужно
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
28 ноя 19, 11:46 [22027442] Ответить | Цитировать Сообщить модератору |
iiyama Member Откуда: Сообщений: 642 |
dimonovych, ищите по слову PIVOT вопрос всплывает каждую неделю по 3 раза |
28 ноя 19, 12:37 [22027502] Ответить | Цитировать Сообщить модератору |
dimonovych Member Откуда: Сообщений: 17 |
Искал. Насколько я понял PIVOT может сделать так:
Как с его помощью получить мой варпиант - я не нашел |
|||||||||||||||||||||||||
28 ноя 19, 13:02 [22027546] Ответить | Цитировать Сообщить модератору |
dimonovych Member Откуда: Сообщений: 17 |
Спасибо. Пока так и сделал. |
||||||||
28 ноя 19, 13:03 [22027548] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8704 |
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 |
28 ноя 19, 13:07 [22027553] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |