Q&A

  • SQL문좀 도와 주세요???
- 테이블
    코드         색상   크기         일자           순번      수량           금액                결과
0620081      01     38      20090109       1        -1          -626364        -626364    
0620081      01     38      20080522       1         1           902455          902455
0620081      01     38      20080507       1         1           1002728                  0
0620081      01     38      20080522       1        -1         -1002728                   0
0620081      01     38      20080626       1          1          1002728      1002728

이라는 테이블에서요!!!!

제가 구하고 싶은 SQL은 여기서 코드/색상/크기는 모두 같습니다.

그리고 일자와 수량, 그리고 금액이 다르지요////

결론적으로 같은 코드/색상/크기의 그룹에서 같은 금액끼리 정렬하여 금액을

계산해 주는 것인데(결과 값),  위에서 보면 일자가 20090109 는 같은 금액이 없고 하나만

있으므로 그대로 결과 값이 나와야 하며,  20080522의 902455 금액도 역시 그렇지요!!

하지만 3/4/5번째의 값들은 금액이 같은 것들이 2개(2개라면 그리어렵지 않지만)가 아닌
3개가 있으므로 결과 값이 0과 0, 그리고 1002728이 나오게 하고 싶습니다.

PS) 3/4/5번째의 값은 3번째와 4번째가 SUM을 하여 1002728  + (-1002728 ) = 0이 나오므로
둘다 0과 0으로 결과값이 나온것이며, 5번째는 한가지의 금액만 남으므로 그대로 1002728 가
나오지요
3  COMMENTS
  • Profile
    아르스 2009.01.22 00:56
    근데 단순히 봤을때 결과값이 0이 아닌 것만 구하면 되는거 아닌가요?

    Select * From Table Where 결과 <> 0

    위의 것이 다른 테이블을 쿼리한 결과라면 서브쿼리를 써서 결과 <> 0 인것만 찾으면 될것 같은데요?
  • Profile
    lee, js 2009.01.22 01:10
    제가 설명이 부족했나 보네요!!1

    여기서요 결과는 SQL을 이용하여 결과치로 나타내고 싶은 값이랍니다.

    0620081 01 38 20080507 1 1 1002728 0
    0620081 01 38 20080522 1 -1 -1002728 0
    0620081 01 38 20080626 1 1 1002728 1002728

    에서 1002728와 -1002728은 서로 계산되어 0이 되고, 1002728 하나를 계산 할
    것이 없으므로 그대로 1002728로 남겠지요...
  • Profile
    소울해커 2009.01.23 00:42
    SELECT
    A.코드, A.색상, A.크기, A.일자, A.순번, A.수량, A.금액,
    ( SELECT SUM(B.금액)
    FROM 테이블 B
    WHERE B.코드 = A.코드 AND B.색상 = A.색상 AND B.크기 = A.크기 AND ABS(B.금액) = ABS(A.금액) ) 결과
    FROM 테이블 A
    ORDER BY ABS(A.금액), A.수량

    대충 이러면 되지 싶은데요...