Как произвести выборку данных из строк в столбцы?

Здравуствуйте! Необходимо разбить данные на два столбца имеющих свои данные.

Имеется такая таблица:

Текст

А нужно получить вот такую:

введите сюда описание изображения

Ломаю голову уже 5 час. Идея пришла только с тем, что необходимо использовать ntile. Чтобы вывести по группно. Но все без результатно.

select min(id), max(id)
  from (
    select id, row_number() over(partition by ntl order by id) grp
      from (
        select id, ntile(2) over(order by id) ntl
          from sales
      )
  )
 group by grp

Ответы (3 шт):

Автор решения: RottenRat

Судя по тому, что вы описали, вы хотите это

SELECT s.FullName, min(s.Sum), max(s.Sum)
FROM sales s
GROUP by s.FullName
→ Ссылка
Автор решения: rotabor

Или так:

SELECT id,FullName,
SUM(CASE
  WHEN SaleData = 2023 THEN Sum ELSE 0 END
) AS '2023',
SUM(CASE
  WHEN SaleData = 2024 THEN Sum ELSE 0 END
) AS '2024'
FROM sales
GROUP BY FullName;

Но как-то MySQL бледно выглядит без итоговых таблиц, потому что в других СУБД можно написать так:

TRANSFORM Sum(Table1.[Sum]) AS TotalSum
SELECT Table1.[FullName]
FROM Table1
GROUP BY Table1.[FullName]
PIVOT Table1.[SaleData];
→ Ссылка
Автор решения: ValNik

Можно и итоги с помощью ROLLUP

select coalesce(FullName,'total') personName
  ,sum(case when SaleData=2022 then SalesSum else 0 end) sale22
  ,sum(case when SaleData=2023 then SalesSum else 0 end) sale23
from sales
group by FullName
with ROLLUP
personName sale22 sale23
SalesPerson1 1000.0999755859375 1002.0999755859375
SalesPerson2 0 1003.0999755859375
SalesPerson3 1004.0999755859375 0
total 2004.199951171875 2005.199951171875
→ Ссылка