2013-12-09 38 views
0

我想顯示不同賬戶按日期餘額合計。我有這些列(帳戶,日期(日期時間),平衡)的SQL查詢的輸出。我正在使用.NET Chart,並且想要在Y軸上顯示X軸上的日期和總餘額。對於下面數據,數據點應爲(2013年12月8日17:00,1800),(2013年12月8日17時01分,1000),(2013年12月8日17時02分,1600)。我已經嘗試用數據填充DataTable,但我需要查詢它才能顯示。有任何想法嗎?總和SQL列按日期不同的賬戶

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 
+3

您正在使用什麼數據庫管理系統和版本? –

+0

你是如何爲'17:00'獲得'1800'的?它不應該是'2600'嗎? – MarcinJuraszek

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

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)) 

由於微軟的T-SQL V110之前(SQL Server 2012中)不已經建立了一個體面的日期格式的功能,上述使用CONVERT函數獲取日期時間在yyyy-MM-dd HH:mm:ss格式和轉換回DATETIME值分組和輸出之前丟棄秒。這應該給你一個單獨的分鐘級別的分組。

當然,如果你想以字符串形式的日期,同時從SELECTGROUP BY列表中刪除外CONVERT語句。

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

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') 
+0

僅適用於MS SQL Server 2012。早期版本的MS SQL沒有'FORMAT'功能。 – Corey

+0

是的,這就是爲什麼我說,因爲OP答案SQL Server 2012中未指定DBMS或版本。 – swandog

+0

不夠公平然後......我看到'FORMAT'和反應。忽略我之前的評論:P – Corey