답변이 없어 재 질문을 드립니다.
쿼리문에서 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해도 안돼니
이를 어쩜좋죠???
꼭 답변이 있길 바랍니다.......
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해도 안돼니
> 이를 어쩜좋죠???
>
> 꼭 답변이 있길 바랍니다.......
>