我想按日期显示不同帐户的总余额。我有这些列(帐户,日期(日期时间),余额)的SQL查询的输出。我正在使用.NET Chart并希望在X轴上显示日期并在Y轴上显示总余额。对于以下数据,数据点应为(2013-12-08 17:00,1800),(2013-12-08 17:01,1000),(2013-12-08 17:02,1600)。我已经尝试用数据填充DataTable但我需要查询它才能显示。有什么想法吗?
Account Date Balance
A 2013-12-08 17:00:37 500
B 2013-12-08 17:00:42 600
C 2013-12-08 17:00:44 700
D 2013-12-08 17:00:46 800
A 2013-12-08 17:01:22 100
B 2013-12-08 17:01:24 200
C 2013-12-08 17:01:28 300
D 2013-12-08 17:01:37 400
A 2013-12-08 17:02:20 100
B 2013-12-08 17:02:25 300
C 2013-12-08 17:02:28 500
D 2013-12-08 17:02:30 700
答案 0 :(得分:1)
MySQL解决方案:
SELECT DATE_FORMAT(date, '%Y-%c-%%d %H:%i'), SUM(balance)
FROM data
GROUP BY DATE_FORMAT(date, '%Y-%c-%%d %H:%i')
返回
DATE_FORMAT(DATE, '%Y-%C-%%D %H:%I') SUM(BALANCE)
2013-12-%d 17:00 2600
2013-12-%d 17:01 1000
2013-12-%d 17:02 1600
SqlFiddle演示:http://sqlfiddle.com/#!2/9b59a/8
答案 1 :(得分:0)
@ marcinjuraszek对SQL Server 2012的回答:
SELECT FORMAT(date, 'yyyy-MM-dd HH:mm'), SUM(balance)
FROM data
GROUP BY FORMAT(date, 'yyyy-MM-dd HH:mm')
答案 2 :(得分:0)
MS SQL的答案类似,日期格式略有不同,以获得所需的分组分辨率:
SELECT CONVERT(DATETIME, LEFT(CONVERT(VARCHAR, [Date]), 120),16)), AVG([Balance])
FROM data
GROUP BY CONVERT(DATETIME, LEFT(CONVERT(VARCHAR, [Date]), 120),16))
由于v110之前的Microsoft T-SQL(SQL Server 2012)没有内置的合适的日期格式化功能,因此上面使用CONVERT
函数以yyyy-MM-dd HH:mm:ss
格式获取日期时间,在转换回DATETIME
值进行分组和输出之前,丢弃秒数。这应该会给你一个单独的分钟级别的分组。
当然,如果您想要字符串形式的日期,请从CONVERT
和SELECT
列表中删除外部GROUP BY
语句。