아~ 또 막혔어요... ㅋㅋ...
필드에 자료가 '20061118' 이런 식으로 됐거든요.
이 자료를 2006-11-18일 마스크 에디터로 받아서 저장한 값입니다.
저장은 '20061118'로 저장된 값인데 우선 스트링그리드 왼쪽줄에 1~12까지 찍구요
다시 cells[0,i]로 비교를 합니다. 근데 비교 값이 붙어서 임의로 제가 copy를 써서 잘랐거든요...
아`~~ 집계관련 너무 어려워요..^^ 글구 무한 루프에 빠졌어요...
저 같은 경우 자료를 '20061118'마스크로 받아서 저장된 경우라 이거 어떻게 집계를 낼 수 있나요...
글구 이런 집계 낼 수(통계)있는 간단한 예제좀 들어주세요...많이 배우고 싶습니다...
부탁합니다...꾸벅
var
i, acount : integer;
a : string;
begin
with query1, stringaligngrid2 do
begin
close;
sql.clear;
sql.add('select RENT_DAY from BOOK_RENT');
sql.add('where RENT_DAY like ''2006%''');
// sql.add('group by RENT_DAY');
sql.add('order by rent_day');
open;
for i := 1 to 12 do
begin
cells[0,rowcount-1] := inttostr(i);
rowcount := rowcount +1;
end;
rowcount := rowcount -1;
for i := 1 to rowcount-1 do
begin
a := copy(fieldbyname('rent_day').asstring, 5,2);
if cells[0,i] = a then
begin
while not (cells[0,i] <> a) do //요기가 무한 루프됩니다.
begin
acount := acount +1;
next;
a := copy(fieldbyname('rent_day').asstring, 5,2);
end;
cells[1,i] := inttostr(acount);
acount := 0;
end;
end;
end;
end;
결과는
월 | 총대여횟수 |
1
2
3
4
5
6
7 8
8
9
10 10
11
12
이렇게 만든 건데....
부탁해요...
글구
아래 쿼리는 오라클 기준입니다.
SELECT DECODE(SUBSTR(RENT_DAY, 5, 2) AS RENT_MONTH, COUNT(*) CNT
FROM BOOK_RENT
WHERE RENT_DAY LIKE '2006%'
GROUP BY SUBSTR(RENT_DAY, 5, 2)
위와 같이 그룹핑하면 단순히 그리드에 순서대로 뿌리기만 하면 되겠지요?
혹 데이터베이스가 다른 거라고 해도 쿼리로 해결하는 방법이 나을 것 같습니다.