2013-12-09 2 views
0

날짜별로 다른 계정의 총 잔액을 표시하려고합니다. 이러한 열 (계정, 날짜 (DateTime), 잔액)이있는 SQL 쿼리의 출력이 있습니다. 나는 .NET Chart를 사용 중이고 Y 축의 X 축과 총 잔액에 Date를 표시하려고합니다. 아래 데이터의 경우 데이터 포인트는 (2013-12-08 17:00, 1800), (2013-12-08 17:01, 1000), (2013-12-08 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

사용중인 DBMS 및 버전은 무엇입니까? –

+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 서버 2012)하지 않습니다 알맞은 날짜 형식 지정 함수가 내장되어 있으면 위의 예제에서는 함수를 사용하여 yyyy-MM-dd HH:mm:ss 형식으로 datetime을 가져오고 초를 버리고 다시 그룹화하고 출력하기 위해 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

@ 2012 SQL Server에 대한 marcinjuraszek의 대답 :

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가 DBMS 또는 버전을 지정하지 않았기 때문에 대답에서 SQL Server 2012를 말한 이유가 그 것이다. – swandog

+0

충분히 공정한 그때. .. 나는 'FORMAT'을보고 반응했다. 이전 코멘트를 무시하십시오 : P – Corey