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)
    )

ただし、そのクエリではエラーが発生します。「#1241 - オペランドには 1 列を含める必要があります。

私を悩ませているのは、このクエリは問題なく機能すると思うということです。列を選択してから、別のテーブルからさらに 2 つ選択し、そこから続行します。何が問題なのかわかりません。

これに対する簡単な修正、またはクエリを作成する別の方法はありますか?

4

2 に答える 2

0

クエリでは、Day の代わりに [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)
    )
于 2014-07-23T10:33:51.597 に答える
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、予約語であるため、適切にエスケープする必要があります。

于 2014-07-23T10:43:06.907 に答える