2014-07-23 2 views
0

, 내 프로젝트에서 다음 쿼리를 사용하려고 :SQL 오류 : 내가 만드는거야 시스템에서 작업하는 동안 피연산자 포함해야 1 열

SELECT WEEKLY_TOTALS.DOMAIN, WEEKLY_TOTALS.CATEGORY, DAY 
    FROM( 
     (SELECT DOMAIN,CATEGORY,DAY,CNT FROM BASE_DATA) AS DAY_CNTS 
    INNER JOIN 
     (SELECT DOMAIN,CATEGORY,SUM(CNT) AS TOT FROM BASE_DATA 
    GROUP BY DOMAIN,CATEGORY) AS WEEKLY_TOTALS 
    ON (DAY_CNTS.DOMAIN = WEEKLY_TOTALS.DOMAIN, 
     DAY_CNTS.CATEGORY = WEEKLY_TOTALS.CATEGORY) 
    ) 

그 쿼리는하지만 나에게 오류가 있습니다 : "# 1241 - 피연산자에 1 개의 열이 있어야합니다.

이 쿼리가 문제가되지 않는다고 생각합니다. 열을 선택한 다음 다른 테이블에서 두 개를 선택하고 계속하십시오. 문제가 무엇인지 파악하십시오.

간단한 수정이 있습니까? 그의 질문을 쓰는 다른 방법?

답변

0

귀하의 괄호는 꺼져 있고 당신은 하위 쿼리에 대한 테이블 별칭을 필요로하고 대신 on 절에 쉼표의 AND이 필요합니다. 이 SQL 서버에있는 경우는 적절하게 될 탈출해야하므로, DAY는 예약어이며, 또한

SELECT 
    WEEKLY_TOTALS.DOMAIN, WEEKLY_TOTALS.CATEGORY, DAY_CNTS.DAY 
FROM 
    BASE_DATA DAY_CNTS 
INNER JOIN 
    (SELECT 
     DOMAIN, CATEGORY, SUM(CNT) AS TOT 
    FROM 
     BASE_DATA 
    GROUP BY 
     DOMAIN, CATEGORY) WEEKLY_TOTALS ON DAY_CNTS.DOMAIN = WEEKLY_TOTALS.DOMAIN 
             AND DAY_CNTS.CATEGORY = WEEKLY_TOTALS.CATEGORY; 

:

는 사실, 당신은 모든 첫 번째 하위 쿼리가 필요하지 않습니다.

0

당신은 당신의 쿼리에서 [DAY] 대신에 오늘의 사용해야합니다

SELECT WEEKLY_TOTALS.DOMAIN, WEEKLY_TOTALS.CATEGORY, [DAY] 
    FROM( 
     (SELECT DOMAIN,CATEGORY,[DAY],CNT FROM BASE_DATA) AS DAY_CNTS 
    INNER JOIN 
     (SELECT DOMAIN,CATEGORY,SUM(CNT) AS TOT FROM BASE_DATA 
    GROUP BY DOMAIN,CATEGORY) AS WEEKLY_TOTALS 
    ON (DAY_CNTS.DOMAIN = WEEKLY_TOTALS.DOMAIN, 
     DAY_CNTS.CATEGORY = WEEKLY_TOTALS.CATEGORY) 
    )