0

我正在使用以下查询返回分组在一起的行:

SELECT Work, COUNT(*) AS count, Amount, SUM(Amount) AS Total FROM work_times GROUP BY Work, Amount

我想对此进行调整,以便我可以在分组数据下方列出每个分组的各个日期。

因此,如果我有下表:

身份证 | 工作 | 金额 | 日期

1 | 治疗会议 | 40 英镑 | 2013-02-02
2 | 顾问会议 | 50 英镑 | 2013-02-01
3 | 治疗会议 | 20 英镑 | 2013-02-03
4 | 顾问会议 | 50 英镑 | 2013-02-08
5 | 顾问会议 | 50 英镑 | 2013-02-15
6 | 治疗会议 | 40 英镑 | 2013-02-09
7 | 顾问会议 | 50 英镑 | 2013-02-22
8 | 治疗会议 | 40 英镑 | 2013-02-16
9 | 治疗会议 | 20 英镑 | 2013-02-10
10 | 顾问会议 | 50 英镑 | 2013-03-01

查询将能够返回:

5 次咨询会议,每次 50 英镑:250 英镑

2013 年 2 月 1 日 2013 年2 月
8 日 2013年 2 月
15 日 2013年 2 月
22 日 2013 年
3 月 1 日

3 次治疗,每次 40 英镑:120 英镑

2013 年 2月 2 日 2013 年 2 月
9 日 2013年 2 月
16 日

2 次治疗,每次 20 英镑:40 英镑

2013 年 2 月3 日 2013 年 2 月
10 日

因为我在查询中将这些行分组在一起,所以我不确定如何引用各个行。

4

3 回答 3

1
SELECT  b.*, c.date2
FROM    (
            SELECT  a.work, 
                    COUNT(*) totalCount, 
                    SUM(Amount) totalAmount
            FROM    tableName a
            GROUP   BY a.work, amount
        ) b
        INNER JOIN
        (
            SELECT  a.work, DATE_FORMAT(Date,'%D %M %Y') date2,
                    date
            FROM    tableName a
        ) c ON b.work = c.work
ORDER   BY b.work, b.totalCount, c.date
于 2013-02-21T23:29:34.903 回答
1

下面的代码是我对JW答案的小修改:

SELECT  b.*, c.date2
FROM    (
            SELECT a.work, a.amount, 
                   COUNT(*) totalCount, 
                   SUM(Amount) totalAmount
            FROM tableName a
            GROUP BY a.work, a.amount
        ) b
        INNER JOIN
        (
            SELECT a.work, a.amount, DATE_FORMAT(Date,'%D %M %Y') date2,
                    date
            FROM tableName a
        ) c ON b.work = c.work and b.amount=c.amount
ORDER BY b.work, b.totalCount, c.date

我在第一个子查询、第二个子查询和 JOIN 表达式中添加了数量。

希望这个链接可以工作:http ://sqlfiddle.com/#!2/e0ec1/24

于 2013-02-22T00:06:22.963 回答
0

2 个查询和一个 UNION 运算符应提供您需要的格式。 SQL小提琴


SELECT '' AS ID, Work, '' AS Date, Amount, SUM(Amount) AS Total
FROM TableName 
GROUP BY Work, Amount
UNION ALL
SELECT ID, Work, Date, Amount, '' AS Total
FROM TableName
ORDER BY Work, Amount, Date;

于 2013-02-22T00:37:55.020 回答