SQL 질문과 답변 게시판
Microsoft SQL Server와 관련된 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
글 수 5,172
|
STORE |
DATE |
USID |
NUMB |
AMT |
POINT |
USEPOINT |
|
A |
20100701 |
1111 |
1 |
1000 |
500 |
0 |
|
A |
20100703 |
1111 |
1 |
2000 |
1000 |
0 |
|
B |
20100710 |
1111 |
1 |
3000 |
1500 |
0 |
|
A |
20100711 |
1111 |
1 |
1000 |
500 |
0 |
|
A |
20100713 |
1111 |
1 |
1000 |
500 |
0 |
|
B |
20100714 |
1111 |
1 |
2000 |
1000 |
0 |
|
C |
20100721 |
1111 |
1 |
0 |
0 |
3300 |
|
D |
20100723 |
1111 |
1 |
0 |
0 |
600 |
위와 같이 판매내역이 있습니다.
1111 이란 사람이 A 지점과 B 지점에서 위와 같이 포인트를 쌓은 내용입니다.
C 지점에서 3300 점을 사용하고
D 지점에서 600 점을 사용했습니다.
|
STORE |
DATE |
USID |
NUMB |
AMT |
POINT |
ACOUNT |
USSTORE |
|
A |
20100701 |
1111 |
1 |
1000 |
500 |
500 |
C |
|
A |
20100703 |
1111 |
1 |
2000 |
1000 |
1000 |
C |
|
B |
20100710 |
1111 |
1 |
3000 |
1500 |
1500 |
C |
|
A |
20100711 |
1111 |
1 |
1000 |
500 |
300 |
C |
|
A |
20100711 |
1111 |
1 |
1000 |
500 |
200 |
D |
|
A |
20100713 |
1111 |
1 |
1000 |
500 |
400 |
D |
|
B |
20100714 |
1111 |
1 |
2000 |
1000 |
0 |
NULL |
이런식으로 표현하고 싶습니다.
아니라면 다른 방법을 알려주셨으면 좋겠습니다.


포인트 적립과 사용 관련 모델을 설계할 때는 선입 선출을 고려해서 만들어야합니다.
보통 적립테이블과 사용테이블을 분리하고 두 테이블 사이에 매개 테이블을 두는 방식입니다.
즉, 포인트를 사용할 때 적립 테이블에서의 primary key값과 사용 테이블에서의 primary key값을 매개 테이블에 저장하는 방식이죠.
예를 들면 C 지점에서 3300포인트를 사용했다면, 사용 테이블에 3300이라고 insert하고, A지점에서 500, A지점에서 1000, B지점에서 1500, 마지막으로 A지점에서 적립한 500 포인트 중 300포인트.. 이렇게 4개의 레코드를 매개 테이블에 insert합니다.
하지만, 리더군님께서 사용하시는 모델의 경우 지금에와서 아래 표와 같이 표현하기는 용이하지 않겠네요.
꼭 필요하시다면 query가 좀 무겁겠지만 while loop로 처리해야 할 것 같습니다.