2012-11-30 2 views
1

내가 고객이 잘 된 순서의 총 가격 계산하려면 : 여기이 쿼리를 오류, 제안 사항과 함께 실행 했습니까?

SELECT 
    C.ctm_Id, O.OrderId, SUM(P.pdt_UnitPrice * O.Quantity), 
FROM 
    Customer C, Orders O, Product P 
WHERE 
    P.pdt_Id = O.OrderID GROUP BY C.ctm_Id 

하는 것은 오류입니다 :

Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'FROM'.

+3

FROM 키워드 앞에 쉼표가 있어야합니다. –

+0

[잘못된 습관 : 오래된 스타일의 조인 사용] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins. aspx) - 이전 스타일 * 쉼표로 구분 된 테이블 목록 * 스타일이 ANSI에서 중단되었습니다. ** 92 ** SQL 표준 - 사용을 중지하십시오. –

답변

0

보십시오. GROUP BY 절에 O.OrderId를 추가하지 않았습니다.

언급 한 luchosrock이 더 좋은 방법입니다.

그러나 JOIN을 사용하는 것이 좋습니다. 그건 그렇고 고객 테이블과 주문 테이블 사이에 조인을하지 않았습니다.

고객의 주문 총액을 합산하려고합니다. 귀하의 검색어는 다음과 같아야합니다 :

select 
    C.ctm_Id, 
    O.OrderId, 
    SUM(P.pdt_UnitPrice * O.Quantity) 
from Customer C 
join Orders O 
    on C.ctm_Id = O.ctm_Id 
join Product P 
    on O.pdt_Id = P.pdt_Id 
group by C.ctm_Id, O.OrderId 
5

추가 쉼표 :

SELECT C.ctm_Id, O.OrderId, SUM(P.pdt_UnitPrice * O.Quantity), 
                  ^-- here 
+0

고마워,하지만 여전히 다른 오류가 있습니다. Column 'Orders.OrderID'는 집계 함수 또는 GROUP BY 절에 포함되어 있지 않기 때문에 선택 목록에서 유효하지 않습니다. –

+0

오류 메시지가 분명합니다 ... group by 절이 없습니다. –

2

이 전에 혼수를 제거 FROM

SELECT C.ctm_Id, O.OrderId, SUM(P.pdt_UnitPrice * O.Quantity) 
    FROM Customer C, Orders O, Product P 
    WHERE P.pdt_Id = O.OrderID GROUP BY C.ctm_Id 
+0

고마워,하지만 난 아직도 다른 오류가있어. 열 'Orders.OrderID'는 집계 함수 또는 GROUP BY 절에 포함되어 있지 않기 때문에 선택 목록에서 유효하지 않습니다. –

+0

@ X.YangUK 오류 메시지가 분명하게 나와 있으므로 SELECT 문에서 Orders.OrderID를 제거하거나 Orders.OrderID를 GROUP BY 문에 추가해야합니다. –

1

SUM(P.pdt_UnitPrice * O.Quantity), - 추가 ,

1

이 문제는 GROUP BY 절에 집계 함수에없는 모든 열을 포함해야한다는 것입니다 SELECT C.ctm_Id, O.OrderId, SUM(P.pdt_UnitPrice * O.Quantity) FROM Customer C, Orders O, Product P WHERE P.pdt_Id = O.OrderID GROUP BY C.ctm_Id,O.OrderId

+0

GROUP BY 절에서 누락 된 열 이름을 catch하는 데 +1이 사용됩니다. – Farhan

관련 문제