Q&A

  • sql문입니다.도와주세요..
하도 안돼서 머리가 돌것같은 카오스델초보입니다..

다름이 아니라...

어떤 데이타베이스에 상품코드와 가격이 나열되어있읍니다..

그런데요...상품코드가 1로시작해서 9로 끝나는것과 1로 시작해서 8로 끝나는 상품의 가격합계를 따로 구해야 할일이 있읍니다..그래서

select code,case of code like "1%9" then sum(단가) tsum, case of code like "1%8" then sum(단가) ssum from goods

이런식으로 하니까 case of를 모르겠다는군요...흠...어떻게 하는방법이 있는지요...(인터베이스를 사용하고 있읍니다.');

읽어주셔서 감사합니다.

2  COMMENTS
  • Profile
    이기태 2001.03.07 08:54


    어느 데이터베이스를 사용하시는지 잘 몰라서 가장 원시적인 방법을 알려드립니다...



    UNION 결과치를 서브 쿼리로 사용하는 SQL을 사용하세요...



    SELECT CODE, SUM(TSUM) TSUM, SUM(SSUM) SSUM

    FROM ( SELECT CODE, SUM(단가) TSUM, 0 SSUM

    FROM GOODS

    WHERE CODE LIKE '1%9'

    GROUP BY CODE

    UNION

    SELECT CODE, 0 TSUM, SUM(단가) SSUM

    FROM GOODS

    WHERE CODE LIKE '1%8'

    GROUP BY CODE )

    GROUP BY CODE



    좀 무식한 방법이긴 하지만...

    그래도 가장 널리 통용할 수 있는 방법입니다...

    DB 특성에 따라 적당히 조절해서 더욱 효율적일 수가 있지만...

    모 잘 모르시겠다면...그리고 데이터 건수가 그리 많지 않다면...

    저렇게 하시는게 일단은 편하실듯...



    코드 체계가 좀 이상해보이지만 저런 룰들이 있다면 따로 칼럼을 두시는게 성능에 훨씬 좋을 듯 싶네요...

    인덱스도 하나 만들어 주시면 더더욱 좋을테구요...



    그리고 코드 길이가 일정하다면 1%9 보다는 1?????9 가 더 나을듯 싶네요...



    카오스@@ wrote:

    > 하도 안돼서 머리가 돌것같은 카오스델초보입니다..

    > 다름이 아니라...

    > 어떤 데이타베이스에 상품코드와 가격이 나열되어있읍니다..

    > 그런데요...상품코드가 1로시작해서 9로 끝나는것과 1로 시작해서 8로 끝나는 상품의 가격합계를 따로 구해야 할일이 있읍니다..그래서

    > select code,case of code like "1%9" then sum(단가) tsum, case of code like "1%8" then sum(단가) ssum from goods

    > 이런식으로 하니까 case of를 모르겠다는군요...흠...어떻게 하는방법이 있는지요...(인터베이스를 사용하고 있읍니다.');

    > 읽어주셔서 감사합니다.

  • Profile
    김형원 2001.03.07 01:57
    카오스@@ wrote:

    > 하도 안돼서 머리가 돌것같은 카오스델초보입니다..

    > 다름이 아니라...

    > 어떤 데이타베이스에 상품코드와 가격이 나열되어있읍니다..

    > 그런데요...상품코드가 1로시작해서 9로 끝나는것과 1로 시작해서 8로 끝나는 상품의 가격합계를 따로 구해야 할일이 있읍니다..그래서

    > select code,case of code like "1%9" then sum(단가) tsum, case of code like "1%8" then sum(단가) ssum from goods

    > 이런식으로 하니까 case of를 모르겠다는군요...흠...어떻게 하는방법이 있는지요...(인터베이스를 사용하고 있읍니다.');

    > 읽어주셔서 감사합니다.



    제가 아는 범위내에선 Interbase에서는 case 구문을 사용할 수 없습니다.

    Case구문은 MS SQL Server에서 사용가능 하구요, Oracle에서는 Decode라는

    구문으로 사용할 수 있습니다. 도움이 않되서 죄송합니다...