2015-05-08 6 views
0

Я пытаюсь создать сводную таблицу из данных в нескольких таблицах, но я не могу заставить ее работать. Это структура базы данных:SQL - Создать сводную таблицу

enter image description here

Так таблица будет выглядеть следующим образом:

enter image description here

Что я хотел бы создать является сводной таблицей объединения всех данных о продажах от клиентов на продукт как это:

enter image description here

(Эти данные должны быть переданы в другую систему, для которой это требуется как вход, поэтому я не могу изменить формат)

Однако я не знаю, как это сделать. Я попытался это:

select distinct c.name, 
     p.name, 
     sum(p.price)   
FROM customer c 
    left join sale s on c.customerId = s.customerId 
    left outer join product p ON s.productId = p.productId 
group by s.productId, s.customerId 

Я знаю, что это не так много, но я с трудом обертывание мою голову вокруг него. Может ли кто-нибудь помочь мне попасть в путь?

Приветствия, CJ

+2

Сколько продуктов вы можете иметь? –

+0

SQL не может поворачивать произвольное количество столбцов без чрезмерного обмана. Возможно ли это в вашем клиентском приложении? – Andomar

+0

2 вопроса, и я мог бы вам помочь: 1. Есть ли новая таблица, в которой будет сохранен этот результат? 2. Знаете ли вы, что такое хранимая процедура, и можете ли вы их использовать? –

ответ

0

Его очень легко, вы можете поворачивать его в нестандартном случае, когда заявления:

select c.name, 
sum(CASE WHEN p.name = 'Product X' THEN p.price ELSE 0 END) AS "Product X", 
sum(CASE WHEN p.name = 'Product Y' THEN p.price ELSE 0 END) AS "Product Y", 
sum(CASE WHEN p.name = 'Product Z' THEN p.price ELSE 0 END) AS "Product Z" 
    FROM customer c 
     left join sale s on c.customerId = s.customerId 
     left outer join product p ON s.productId = p.productId 
    group by c.customerId, c.name 
Смежные вопросы