Как SQL-запросом сделать из повторяющихся строк столбцы?

Здравствуйте! Допустим, есть таблица
Дата | Продукция | количество
------------------------------------------------
19.03.2014 | "Отруби" | 24211
19.03.2014 | "Перья" | 0
19.03.2014 | "Пшено" | 150
20.03.2014 | "Картон" | 165
20.03.2014 | "Кирпич" | 70
20.03.2014 | "Отруби" | 91
20.03.2014 | "Перья" | 0
20.03.2014 | "Пшено" | 50
21.03.2014 | "Кирпич" | 140
21.03.2014 | "Отруби" | 34137
21.03.2014 | "Перья" | 0
Как из нее сделать
"Отруби" | "Перья" | "Пшено" | "Картон" | "Кирпич
---------------------------------------------------------------------------------------------
19.03.2014 | 24211 | 0 | 150 | 0 | 0
20.03.2014 | 91 | 0 | 50 | 165 | 70
21.03.2014 | 34137 | 0 | 0 | 0 | 140
SQL запросом, либо SQLDataReaderом в С++ windows Forms
  • Вопрос задан
  • 2670 просмотров
Решения вопроса 1
svd71
@svd71
select
m.date,
(select sum(kolichestvo) from mytable p where p.produkt='Отруби' and p.date=m.date) as OTRUBI,
(select sum(kolichestvo) from mytable p where p.produkt='Перья' and p.date=m.date) as PERIA,
(select sum(kolichestvo) from mytable p where p.produkt='Пшено' and p.date=m.date) as PSHENO,
(select sum(kolichestvo) from mytable p where p.produkt='Картон' and p.date=m.date) as Karton,
(select sum(kolichestvo) from mytable p where p.produkt='Кирпич' and p.date=m.date) as KIRPICH

from mytable m
group by m.date
order by m.date
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@pihel
Sql, Oracle, pl/sql, BI, ETL, php, olap
Для sqlite так:
SELECT Дата ,
 SUM(CASE WHEN  Продукция = 'Отруби' THEN  количество END ) as otrubi,
 SUM(CASE WHEN  Продукция = 'Перья' THEN  количество END ) as peria,
 .....
FROM таблица
GROUP BY Дата


Для mssql/oracle, если сущностей много, можно использовать PIVOT.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы