2015-05-25 3 views
0

Я использую SQLite в качестве моей базы данных в своем приложении на C++. У меня есть таблица, аналогичная приведенной нижеSQLite Excel style Сводная таблица

Day | PartyA | PartyB | Amount 
-------------------------------- 
1 | X | Y | 25 
1 | X | K | 10 
1 | Y | M | 30 
1 | Z | L | 20 
2 | X | Y | 10 
2 | X | K | 30 
2 | Y | M | 50 
2 | Z | L | 5 
3 | X | K | 60 
3 | Y | M | 15 

и я хочу получить что-то вроде таблицы ниже. Это похоже на сводную таблицу MS Excel; итоговая таблица имеет уникальные пары PartyA - PartyB, а столбец с именем TotalAmount имеет суммирование значений суммы, указанных в предыдущей таблице.

PartyA | PartyB | TotalAmount 
-------------------------------- 
    X | Y | 35 
    X | K | 100 
    Y | M | 95 
    Z | L | 25 

Хотя интерфейс API C/C++ позволяет реализовать это, я хочу сделать это с помощью запросов SQL.

Ваша помощь будет очень признательна по этому вопросу. Заранее спасибо

ответ

1

Вам необходимо сгруппировать PartyA и PartyB, а затем взять сумму суммы для каждой группы. Используйте следующий запрос:

SELECT PartyA, PartyB, SUM(Amount) TotalAmount FROM MyTable 
GROUP BY PartyA, PartyB; 

Эта группа объединяет пару PartyA и PartyB перед применением функции sum.

SQLFiddle demo here.

КОММЕНТАРИЙ:

Вы упомянули 'стержень' в заголовке. Но, как вы можете видеть из приведенного выше запроса, вам не нужно использовать точку опоры для вашего требования. Кроме того, SQLite не поддерживает функцию поворота. Но возможен обходной путь для поворота, as shown in this question. Просто добавьте сюда для чтения.

+0

Если правда говоря, не уверен, о концепции Pivot в SQL, поэтому я явно указано стиль Excel в мой пост, так как это единственная точка, которую я знаю :) –

+0

Тогда вы должны определенно читать на своде. Это довольно удобная вещь, и вы можете столкнуться с некоторыми вариантами использования в будущем. :) – CodeNewbie

1

Это будет SQL способ сделать это

select PartyA,PartyB, sum(Amount) as TotalAmount from <giventable> 
group by PartyA, PartyB 

относятся также here более

Смежные вопросы