2

我正在查询报告并使用汇总来获取总数。我的一个专栏有一个在末尾重复的文本字段。例如:

SELECT * FROM transactions;

  transNum | itemid | description | qty
 ---------------------------------------
        01 |     01 |    DESC1    |  14
        02 |     01 |    DESC1    |  05
        03 |     01 |    DESC1    |  01
        04 |     02 |    DESC2    |  02
        05 |     02 |    DESC2    |  01
        06 |     02 |    DESC2    |  02
        07 |     03 |    DESC3    |  05
        08 |     03 |    DESC3    |  06
        09 |     03 |    DESC3    |  01

SELECT itemid,description,qty FROM transactions GROUP BY id WITH ROLLUP;

    itemid | description | qty
   ----------------------------
        01 |    DESC1    |  20
        02 |    DESC2    |  05
        03 |    DESC3    |  12
           |    DESC3    |  37

这是一个粗略的例子,我的实际数据由多个表组成。

现在,我知道 DESC3 被重复了,因为我没有按描述字段分组,但是有什么函数可以解决这个问题吗?

其他数据库引擎有一个 GROUPING 功能,这基本上是我需要的,但在 MySQL 中。

感谢您的任何帮助

4

3 回答 3

4

好的,然后试试这个:

SELECT a.itemid, b.description, a.total
FROM
    (
        SELECT itemid, sum(qty) as total
        FROM transactions
        GROUP BY itemid WITH ROLLUP
    ) as a
    LEFT JOIN item b ON a.itemid=b.itemid

假设您有一个以item项目描述为键的表命名itemid

于 2012-10-17T18:12:36.407 回答
2

docs来看,无法更改最后一行的内容。

结果集在行的中带有一个NULL值,以便您可以在应用程序中识别它。1st columnrollup

这是一个可以使用它的 SQL Fiddle:http ://sqlfiddle.com/#!8/d611d/8

rollup如您所见,它确实重复了该行中的先前描述。

于 2012-10-17T18:01:30.853 回答
0

采用:case when itemid is null then Total

于 2015-02-25T21:30:47.687 回答