2014-07-23 59 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列

什麼讓我感到困惑的是,我認爲這個查詢沒有問題,選擇列,然後從另一個表中選擇兩個,然後從那裏繼續,我只是' t找出問題所在。

是否有簡單的修復t他的,或另一種方式來寫我的查詢?

回答

0

你的括號是關閉的,您需要爲子查詢表的別名,你需要AND代替on子句中的一個逗號。

其實,你並不需要第一子查詢都:

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; 

此外,如果這是SQL Server上,DAY是保留字,因此應適當逃脫。

0

您必須在查詢中使用的[日],而不是天:

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) 
    ) 
相關問題