сумма выпуска php mysql - PullRequest
       3

сумма выпуска php mysql

1 голос
/ 04 января 2012

Я хочу сгенерировать отчет, чтобы накапливать общее количество запаса, которое было заказано различными филиалами за месяц, и каждое отделение будет суммировать количество по объединенному (GROUP BY) запасу.

Я урезал свою таблицу базы данных для легкого понимания, как показано ниже:

Item     Branch        Order_Quantity
---------------------------------------
Pencil   Branch-A         5
Ruler    Branch-D         3
Staple   Branch-C         12
Pencil   Branch-A         5
Ruler    Branch-B         3
Staple   Branch-C         2
Pencil   Branch-A         10
Ruler    Branch-A         6
Staple   Branch-D         1

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

Item     Branch-A     Branch-B     Branch-C     Branch-D
----------------------------------------------------------
Pencil     20            15           32           8
Ruler      12            0            40           10
Staple     4             8             5           0

и так далее ...

Как я могу использовать запрос, чтобы вызвать вышеуказанный результат и присвоить каждую сумму соответствующему столбцу ветви?

ниже мой запрос:

SELECT `Item`, `Branch`, sum(`Order_Quantity`) FROM `table` GROUP BY `Item`

но когда я позвоню и зациклю таблицу, результат покажет сумму суммы для каждой ветви

Item     Branch-A     Branch-B     Branch-C     Branch-D
----------------------------------------------------------
Pencil     75            75           75           75
Ruler      62            62           62           62
Staple     17            17           17           17

Надеюсь, что кто-то может помочь в этом.

спасибо.

Ответы [ 4 ]

3 голосов
/ 04 января 2012

Попробуйте:

SELECT `Item`, `Branch`, sum(`Order_Quantity`) FROM `table` GROUP BY `Item`, `Branch`
1 голос
/ 04 января 2012

Это какой-то PIVOT:

select item, 
    sum(case when branch = 'Branch-A' then order_Quantity else 0 end) as BranchA,
    sum(case when branch = 'Branch-B' then order_Quantity else 0 end) as BranchB,
    sum(case when branch = 'Branch-C' then order_Quantity else 0 end) as BranchC,
    sum(case when branch = 'Branch-D' then order_Quantity else 0 end) as BranchD
from yourTable
group by item
1 голос
/ 04 января 2012

при условии, что у вас есть конечное число ветвей, вы можете создать запрос с суб-выборами для каждого "столбца", который вы хотите отобразить (в соответствии с ветвью) с вашими суммами, например так:* и т.д ..

Это не очень элегантное решение, но оно приведет к тому, что вы ищете.

В противном случае вы можете последовать советам других авторов, что более эффективно.с точки зрения SQL, но не будет генерировать столбцы, которые вы надеетесь увидеть (в соответствии с вашим вопросом).

0 голосов
/ 04 января 2012
SELECT SUM(Order_Quantity) AS CNT FROM `table` GROUP BY `Branch`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...