我使用以下查询返回分组在一起的行:
SELECT Work, COUNT(*) AS count, Amount, SUM(Amount) AS Total FROM work_times GROUP BY Work, Amount
我想调整这一点,这样我就可以在分组的数据下面列出每个分组的单独日期。
ID |工时|金额|日期
1|治疗时段|02 40| 2013-02-02
2|咨询会|01 50| 2013-02-01
3|治疗时段|03 20| 2013-02-03
4|咨询会|08 50| 2013-02-08
5|咨询会|02 50| 2013-02-15
6|治疗时段|02 40| 2013-02-09
7|咨询会|02 50| 2013-02-22
8|治疗时段|16 40| 2013-02-16
9|治疗时段|10 20| 2013-02-10
10 |咨询会|01 50| 2013-03-01
查询将能够返回:
5个咨询会话,每个50 50:250 50
2013年2月1日
2013年2月8日
2013年2月15日
2013年2月22日
3次治疗,每次40 40:120 40
2013年2月9日
2013年2月16日
2次治疗,每次20 40:40 40
发布于 2013-02-22 08:06:23
下面的代码是我对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我在第一个子查询、第二个子查询和连接表达式中添加了amount。
希望这个链接能起作用:http://sqlfiddle.com/#!2/e0ec1/24
发布于 2013-02-22 07:29:35
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-22 08:37:55
2查询和UNION运算符应该提供所需的格式。SQL Fiddle
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;
https://stackoverflow.com/questions/15014189
复制相似问题