쿼리 도움 좀 부탁드려요 ㅠ.ㅠ 0 2 1,699

by 윤영재 [SQL Query] [2012.04.19 15:29:19]


아래와 같은 기초데이터를 가지고 그 밑에 있는 출력형태와 같이 출력하려고 하는데요.
쉬운것 같은데도 오전내내 삽질 중입니다. 도와주세요~~~ ㅠ.ㅠ


기초데이터
03-14 / 등록 / 홍길동 / 현금 / 3000 / 결제
03-14 / 등록 / 심심해 / 카드 / 3000 / 결제
03-14 / 등록 / 심심해 / 현금 / 2000 / 결제
03-14 / 환불 / 김리라 / 현금 / 2000 / 취소


출력형태
날짜 / 내용 / 현금 / 카드 / 수입합계 / 지출금액
03-14 / 홍길동 / 3000 / 0 / 3000 / 0
03-14 / 심심해 / 2000 / 3000 / 5000 / 0
03-14 / 김리라 / 0 / 0 / 0 / 2000
============================
일별 합계 / 현금:5000 / 카드: 3000 / 총수입:8000 / 총지출:2000
by 김용한 [2012.04.19 16:17:12]

WITH T AS
(
SELECT '03-14' CDATE, '등록' CODE, '홍길동' NAME, '현금' TYPE, 3000 CASH, '결제' COMT FROM DUAL UNION ALL
SELECT '03-14' CDATE, '등록' CODE, '심심해' NAME, '카드' TYPE, 3000 CASH, '결제' COMT FROM DUAL UNION ALL
SELECT '03-14' CDATE, '등록' CODE, '심심해' NAME, '현금' TYPE, 2000 CASH, '결제' COMT FROM DUAL UNION ALL
SELECT '03-14' CDATE, '환불' CODE, '김리라' NAME, '현금' TYPE, 2000 CASH, '취소' COMT FROM DUAL
)
SELECT DECODE( CDATE, NULL, '일별합계', CDATE ) "날짜"
   , NAME "내용"
   , SUM( CASE WHEN TYPE='현금' AND CODE = '등록' THEN CASH
  ELSE 0
  END
) "현금"
, SUM( CASE WHEN TYPE='카드' AND CODE = '등록' THEN CASH
  ELSE 0
  END
) "카드"
, SUM( CASE WHEN TYPE='현금' AND CODE = '등록' THEN CASH
  ELSE 0
  END
) + SUM( CASE WHEN TYPE='카드' AND CODE = '등록' THEN CASH
  ELSE 0
  END
) "수입합계"
, SUM( CASE WHEN TYPE='현금' AND CODE = '환불' THEN CASH
  ELSE 0
  END
) "지출금액"
 FROM T
GROUP BY ROLLUP((CDATE,NAME))
ORDER BY CDATE, NAME DESC

by 윤영재 [2012.04.19 17:06:53]

아..감사합니다~ 많은 도움이 됐습니다~
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입