자료가 아주 많기 때문에 테이블 말구 꼭 쿼리를 써야합니다..
테이블에 필드0, 필드1, 필드2, 필드3, 필드4가 있을때
필드0의 KEY구요,
필드1은 Group by를 해야하는 필드구요
필드2는 항목이 aa, bb, cc ,dd 이렇게 네가지만 가질수 있는 필드구요
필드3은 Boolean값을 가지구 있는 필드 입니다.
필드4는 Money값을 가지구 있습니다..
이필드들의 값을 이용해서 이런 표를 만들어야하거든요..
필드0으로 검색을 한담에 그 자료로..
┏------------------필2------------------┓
| | aa | bb | cc | dd || 합계
| |cnt | sum |cnt | sum |cnt | sum |cnt | sum ||cnt | sum |
==================================================================================
|필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
필1a|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
|필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
-------------------------------------------------------------------------------- |필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
필1b|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
|필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
-------------------------------------------------------------------------------
|필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
필1c|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
|필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
============================================================================= |필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
합계|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
|필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
이해가 잘 되실련지 잘모르겠네요..
흠...그러니깐 필드1로 그룹핑을 해야하구요...필드2의 값은 aa,bb,cc,dd네가지밖에 없는데
그걸 또 필드 3의 Boolean값으로 나눠서 true인거 false인거 에 필드4의 값을 합하구,
음...보시면 아시겠지만..결국 필드4의 값의 통계를 내는것입니다..
이거의 쿼리문을 어떻게 써야할지 정말 모르겠습니다..도움좀 주세요..네?네?
제발요...
지금 제가 저것땜에 고민하느냐구. 암것두 못하구 있습니다..
그리고 중요한건 저대로 출력을 해야한다는 겁니다...흑흑..
제발요..그리고 디시젼큐브를 이용해보라구 하시는 말씀은 ...하지 말아주세요..
왜냐면...디시젼 큐브는 한 항목 밖에 안돼진 않습니까..count면 count..sum이면 sum..
근데 전 저걸한 화면에 한꺼번에 보여줘야합니다..그리고 화면에 디스플레이 하는것 보다
출력하는게 더 중요합니다..제발. 저좀 도와주세요..
그리고 제 설명중 부족한게 있으면 질문해주시구요..
그럼..꾸벅 부탁 드립니다..
상당히 힘들걸 하시네요...
제가 아는 방법은 크게 두가지 입니다.
첫번째로 쿼리는 그냥하고 다른 부분에서 해결하는 거죠..
select 필드1, 필드2,필드3, sum(필드4) as money from 테이블
group by 필드1,필드2,필드3
이렇게 하면 각각의 합을 구할수 있죠...
하지만 이렇게 하면 각 구분값 별로 값이 나오기 때문에 출력물을 만들때 상당히 애를
먹습니다.. 그래서 출력물을 간편하게 만들기 이해서 Temp테이블을 만들어서 거기에
값을 넣기도 합니다..
----
그리고 두번째는 어차피 이런 출력물은 출력형식이 거의 정형화 되어 있기 때문에
DbLabel이 아닌 그냥 Label에다가 노가다로 넣어주는 거죠..
----------------------------------------------------------------
문제는 두가지다 코딩이 너무 많다는 거죠....
그리고 다른 방법은 쿼리를 이용해서 하는겁니다..
이건 파라독스에서는 안될껍니다.. 다른 디비를 사용하는 경우에만 될껍니다..
정확한 내용을 모르니까 간략하게만 설명을 드릴께요..
방식은 이렇습니다.. 각 구분값을 하나의 값으로 만들어서 그값을 결과적으로 1 or
0 으로 만듭니다 그렇게 해서 이값을 최종구해야하는 Money에 곱하는 거죠.. 이렇게
하면 해당되는 값은 money값이 넘어오고 나머지는 0이 되니까 정확한 계산이 가능합
니다..
얘기가 조금 길어졌는데...
간단하게 예를 들어보죠..
마구잡이로 넣은 어떤 자료가 있습니다. 여기에서 10일단위로 끊어서 출력을 하고
싶어요.. 이럴경우 그냥 그룹을 잡아서 해도 되지만 이렇게 하면 한번더 변환을
해야하고 단지 1-10, 11-20, 21-31까지를 0 또는 1로 만들어 주면 됩니다.
마찬가지죠
이걸 하나의 레코드로 만들고 싶은게 문제죠 이럴경우 각 월을 0 or 1로 만들어 줍니다.
select sign(sign(10 - DatePart(dd, inDate))+ 1) * inamt as amt10,
//요게 1-10까지
(1 - sign(sign(10 - DatePart(dd, inDate))+ 1)) *
sign(sign(20 - DatePart(dd, inDate))+ 1) * inamt as amt20,
// 요게 11-20까지
(1 - sign(sign(20 - DatePart(dd, inDate))+ 1)) * inamt as amt30
//요게 21-30까지
from inpu
where indate between '2000-01-01' and '2000-01-31'
이렇게 하면 값이 amt10 amt20 amt30으로 나오죠...
쿼리가 좀 복잡하죠??? 하지만 보기 보다 상당히 빠른속도를 보여줄겁니다...
쿼리를 쓰는 여러가지 방식중에서 제가 무척 좋아하는 방식인데...단저이 좀 복잡해서
주석을 반드시 달아두어야 나중에 유지보수할때 머리아픈일이 없겠죠..
음.. 그리고 응용범위도 상당히 넓어서 oracle에서는 decode문등을 이용해도
비슷한 결과를 얻을 수 있습니다..
제가 잘 몰라서 글이 좀 길어졌네요... 그럼 즐거운시간 되세요..
- 초보 하얀까마귀 -
이은정 wrote:
> 자료가 아주 많기 때문에 테이블 말구 꼭 쿼리를 써야합니다..
> 테이블에 필드0, 필드1, 필드2, 필드3, 필드4가 있을때
> 필드0의 KEY구요,
> 필드1은 Group by를 해야하는 필드구요
> 필드2는 항목이 aa, bb, cc ,dd 이렇게 네가지만 가질수 있는 필드구요
> 필드3은 Boolean값을 가지구 있는 필드 입니다.
> 필드4는 Money값을 가지구 있습니다..
>
> 이필드들의 값을 이용해서 이런 표를 만들어야하거든요..
>
> 필드0으로 검색을 한담에 그 자료로..
>
> ┏------------------필2------------------┓
> | | aa | bb | cc | dd || 합계
> | |cnt | sum |cnt | sum |cnt | sum |cnt | sum ||cnt | sum |
> ==================================================================================
> |필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
> 필1a|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
> |필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
> -------------------------------------------------------------------------------- |필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
> 필1b|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
> |필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
> -------------------------------------------------------------------------------
> |필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
> 필1c|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
> |필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
> ============================================================================= |필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
> 합계|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
> |필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|
>
> 이해가 잘 되실련지 잘모르겠네요..
> 흠...그러니깐 필드1로 그룹핑을 해야하구요...필드2의 값은 aa,bb,cc,dd네가지밖에 없는데
> 그걸 또 필드 3의 Boolean값으로 나눠서 true인거 false인거 에 필드4의 값을 합하구,
> 음...보시면 아시겠지만..결국 필드4의 값의 통계를 내는것입니다..
> 이거의 쿼리문을 어떻게 써야할지 정말 모르겠습니다..도움좀 주세요..네?네?
> 제발요...
> 지금 제가 저것땜에 고민하느냐구. 암것두 못하구 있습니다..
> 그리고 중요한건 저대로 출력을 해야한다는 겁니다...흑흑..
> 제발요..그리고 디시젼큐브를 이용해보라구 하시는 말씀은 ...하지 말아주세요..
> 왜냐면...디시젼 큐브는 한 항목 밖에 안돼진 않습니까..count면 count..sum이면 sum..
> 근데 전 저걸한 화면에 한꺼번에 보여줘야합니다..그리고 화면에 디스플레이 하는것 보다
> 출력하는게 더 중요합니다..제발. 저좀 도와주세요..
> 그리고 제 설명중 부족한게 있으면 질문해주시구요..
> 그럼..꾸벅 부탁 드립니다..
>