Q&A

  • 쿼리문에 대한 질문 ( 꼭부탁드립니다.....)
답변이 없어 재 질문을 드립니다.

쿼리문에서 CASE문을 써서 조건을 주었거든요

물론 그룹하지 않은 상태에서는 이 쿼리문이

살행이 잘돼는데

그룸한상태에서 이조건에대한 값을 SUM 하려고 하는데

잘 안돼는군요....



실제 쿼리문은 아래와같고요

Select A.BomCode, C.BomName, B.Whape, Sum(A.SoyoRang/A.Soyowon) proRang

,SoKum = Case

When B.Danga <> 0 Then (A.SoyoRang*B.Danga)

Else (A.SoyoRang*B.imsiDanga)

End

,BSoKum = Case

When B.Danga <> 0 Then (A.SoyoWon*B.Danga)

Else (A.SoyoWon*B.imsiDanga)

End

from SOYO A, Jaje B, BomH C

Where A.Bomcode =C.BomCode

and A.JjCode=B.JjCode

and A.LevelNo='0'

and A.Gubun='1'

Group by A.BomCode, C.BomName, B.Whape

Order by A.BomCode, C.BomName, B.Whape



Sokum, BSoKum을 SUM하고싶은데 SUm(SOKUm) 아런식으로 해도 안돼고

CASE 문의 식을 SUM해도 안돼니

이를 어쩜좋죠???



꼭 답변이 있길 바랍니다.......



1  COMMENTS
  • Profile
    nilriri 2000.06.22 19:00
    샬롬!



    GROUP BY를 사용할경우는 그룹함수를 사용하지 않은 필드에대해서는 모두 GROUP BY 절 다음에 필드명을 열거해 주어야 합니다.

    그룹함수에는 SUM, COUNT, AVG, MAX, MIN....



    그러니까...

    Select A.BomCode, C.BomName, B.Whape, Sum(A.SoyoRang/A.Soyowon) proRang

    ,SoKum = Case

    When B.Danga <> 0 Then SUM(A.SoyoRang*B.Danga)

    Else SUM(A.SoyoRang*B.imsiDanga)

    End

    ,BSoKum = Case

    When B.Danga <> 0 Then SUM(A.SoyoWon*B.Danga)

    Else SUM(A.SoyoWon*B.imsiDanga)

    End

    from SOYO A, Jaje B, BomH C

    Where A.Bomcode =C.BomCode

    and A.JjCode=B.JjCode

    and A.LevelNo='0'

    and A.Gubun='1'

    Group by A.BomCode, C.BomName, B.Whape, B.Danga

    Order by A.BomCode, C.BomName, B.Whape



    라고 하셔야 할것 같습니다.

    그러나 이렇게 하면 단가별로 분리가 되겠군요...

    그럼 이렇게 하면 어떨지...



    Select A.BomCode, C.BomName, B.Whape, Sum(A.SoyoRang/A.Soyowon) proRang

    ,SoKum = Case

    When SUM(B.Danga) <> 0 Then SUM(A.SoyoRang*B.Danga)

    Else SUM(A.SoyoRang*B.imsiDanga)

    End

    ,BSoKum = Case

    When SUM(B.Danga) <> 0 Then SUM(A.SoyoWon*B.Danga)

    Else SUM(A.SoyoWon*B.imsiDanga)

    End

    from SOYO A, Jaje B, BomH C

    Where A.Bomcode =C.BomCode

    and A.JjCode=B.JjCode

    and A.LevelNo='0'

    and A.Gubun='1'

    Group by A.BomCode, C.BomName, B.Whape

    Order by A.BomCode, C.BomName, B.Whape



    또는 단가가 0인것을 예외처리를 해주는 부분을 WHERE절로 옮기고 두번으로 나누어 SELECT 한후 UNION으로 묶어주는 방법.. 기타 등등...



    그럼 좋은 결과 있으시길...



    조유정 wrote:

    > 답변이 없어 재 질문을 드립니다.

    > 쿼리문에서 CASE문을 써서 조건을 주었거든요

    > 물론 그룹하지 않은 상태에서는 이 쿼리문이

    > 살행이 잘돼는데

    > 그룸한상태에서 이조건에대한 값을 SUM 하려고 하는데

    > 잘 안돼는군요....

    >

    > 실제 쿼리문은 아래와같고요

    > Select A.BomCode, C.BomName, B.Whape, Sum(A.SoyoRang/A.Soyowon) proRang

    > ,SoKum = Case

    > When B.Danga <> 0 Then (A.SoyoRang*B.Danga)

    > Else (A.SoyoRang*B.imsiDanga)

    > End

    > ,BSoKum = Case

    > When B.Danga <> 0 Then (A.SoyoWon*B.Danga)

    > Else (A.SoyoWon*B.imsiDanga)

    > End

    > from SOYO A, Jaje B, BomH C

    > Where A.Bomcode =C.BomCode

    > and A.JjCode=B.JjCode

    > and A.LevelNo='0'

    > and A.Gubun='1'

    > Group by A.BomCode, C.BomName, B.Whape

    > Order by A.BomCode, C.BomName, B.Whape

    >

    > Sokum, BSoKum을 SUM하고싶은데 SUm(SOKUm) 아런식으로 해도 안돼고

    > CASE 문의 식을 SUM해도 안돼니

    > 이를 어쩜좋죠???

    >

    > 꼭 답변이 있길 바랍니다.......

    >