Сумма MySQL на соответствие набора данных - PullRequest
0 голосов
/ 05 июня 2011

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

У меня есть таблица с именем "gjournal_main"

`dateinput` datetime NOT NULL COMMENT 'Input Date',
`datepaid` date NOT NULL COMMENT 'Date of Invoice',
`invoiceno` varchar(12) NOT NULL COMMENT 'Invoice #',
`bookno` varchar(12) NOT NULL,
PRIMARY KEY (`invoiceno`),
KEY `invoiceno` (`invoiceno`)

, а другая с данными транзакций "general_journal" (или элементами)

`eid` int(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Entry ID',
`tid` varchar(12) NOT NULL COMMENT 'Transaction ID or Inv no',
`ref` varchar(15) NOT NULL COMMENT 'Reference no',
`notes` varchar(30) NOT NULL COMMENT 'Narations',
`accountname` varchar(50) NOT NULL COMMENT 'AC Title',
`debit` int(12) NOT NULL,
`credit` int(12) NOT NULL,
PRIMARY KEY (`eid`),
KEY `tid` (`tid`),
KEY `ref` (`ref`)

Я хочу выполнить поиск по «bookno» и перечислить все записи с соответствующим номером книги (например, 1254), несколько invoiceno могут иметь одну bookno.Я хочу, чтобы результаты были примерно такими: ....

------------------------------------------------------
inputdate   |invoiceno |bookno|accounttitle|debit|credit
------------------------------------------------------
2011-05-29  | 1        |1254  |item a      |12   |0
2011-05-29  | 1        |1254  |item b      |0    |3
2011-05-29  | 1        |1254  |item b      |1    |3
                             **TOTAL       |13   |6**
2010-01-06  | 2        |900   |item a      |10   |0
2010-01-06  | 2        |900   |item b      |50   |0
2010-01-06  | 2        |900   |item c      |10   |30
2010-01-06  | 2        |900   |item d      |10   |0
                             **TOTAL       |80   |30**

------------------------------------------------------

Я хочу перерыв с суммой дебета и кредита после перечисления счета-фактуры № 1 и так далее, как я могу это сделать?

спасибомного

1 Ответ

0 голосов
/ 05 июня 2011

Использование объединения для привязки строки с итогами к отдельным строкам:

select
    g.inputdate,
    g.invoiceno,
    g.bookno,
    j.accountname,
    j.debit,
    j.credit,
    1 as recordtype /*invoice line*/
from
    gjournal_main g
    inner join general_journal j on j.tid = g.invoiceno
union all
select
    null,
    null,
    g.invoiceno,
    '** Total',
    sum(j.debit),
    sum(j.credit),
    2 as recordtype /* total */
from
    gjournal_main g
    inner join general_journal j on j.tid = g.invoiceno
group by
    g.invoiceno
order by
    bookno,
    invoiceno,
    recordtype
having
    bookno = 600
...