2013-02-15 1 views
0

나는 간단한 일일 대차 대조표를 만들기 위해 일하고있어 따라서 DBGrid를 사용하여 테이블에서 열을 포함 : 날짜, .. 내가 원하는 것은 날짜별로 그룹화하고 균형을 이루기 위해 각 날짜의 시작 및 종료를 계산하는 것입니다.다른 그룹에 대한 열의 합계 델파이에서

예 :

 1/01/2013 in (100) out (0), 
    1/01/2013 in (200) out (0), 
    1/01/2013 in (0) out (100), 

나는 결과가 (300) 출력 (100)

어떤 도움을 내가 날짜를 그룹화 한 후 데 문제의 원인하십시오에서 2013년 1월 1일되고 싶어요.

+0

DBGrid에서 원하는 결과를 표시하기 위해 쿼리에 추가 할 SQL 문을 묻습니다. 날짜, 합계 (개), 합계 (개)를 선택한 다음 그룹화 된 날짜별로 그룹화하면 – Beast

+0

이 표시됩니다. 그것. 아래 내 대답을 참조하십시오. :-) –

답변

3

당신은 집계 식 (SUM) 번 이상을 사용

SELECT 
    YourDateField, 
    Sum(in) as InAmount, 
    Sum(Out) as OutAmount, 
    Sum(In) - Sum(Out) as Balance 
FROM 
    YourTable 
GROUP BY 
    YourDateField 

출력 :

YourDateField InAmount OutAmount 
============= ======== ========= 
01/01/2013  300   100 

는 물론, 날짜 컬럼의 이름과 실제 테이블과 YourDateFieldYourTable 교체, 열 별칭 (InAmount, OutAmountBalance)을 원하는대로 지정할 수 있습니다.

+0

다른 필드 (in, out)가 group by 문에 없다는 예외가 있습니까? – Beast

+0

@Beast 아니요, 다른 필드는 집계에 대한 인수로만 사용되기 때문입니다. – ain

+2

아니, 아니. 그러나 당신은 대답을 기다리는 대신 빨리 알아낼 수 있습니다. :-)'SELECT'는 결코 (INSERT, UPDATE, DELETE는 할 수 있지만 SELECT는 할 수 없음) 아무 것도 해칠 수 없다는 것을 기억하십시오. ** 항상 ** SELECT를 시도 할 수 있습니다. . 실제로'WHERE' 절에서 같은 조건을 사용하여'DELETE'를 실행하기 전에 항상 ** SELECT **를 시도해야합니다. 그러면 당신이 먼저 일치시키고 자하는 것을 얻을 수 있습니다. –

관련 문제