質問

しています SELECT 決算

SELECT SUM(dbo.DLData.Quantity)
    FROM dbo.MasterDates
    JOIN dbo.DLData ON MasterDates.[ID] = dbo.DLData.DownloadID
    WHERE dbo.MasterDates.[Date] BETWEEN @From AND @To
    AND dbo.MasterDates.SiteID = @X

場合はプラグインの @From, @To@X ことができる。この右側の比較です。しかし、比較の @X ニーズから左手側として SELECT 外側はテストを毎 SiteID セットになっています。この条項の条項です。彼らが必要となります。こちらはselectステートを選択します。最終的にはhaving条項を決定する重要製品のためのサイトです。

--INSERT INTO SiteKeyProducts
    SELECT dbo.MasterDates.SiteID as SiteID , dbo.DLData.Product as ProductID
        FROM dbo.MasterDates
        JOIN dbo.DLData ON dbo.MasterDates.[ID] = dbo.DLData.DownloadID
        WHERE dbo.MasterDates.[Date] BETWEEN @From AND @To
        GROUP BY dbo.MasterDates.SiteID , dbo.DLData.Product
        HAVING
            SUM(dbo.DLData.Quantity) > 960 OR
            SUM(dbo.DLData.Quantity) > (SELECT SUM(dbo.DLData.Quantity)
                            FROM dbo.MasterDates
                            JOIN dbo.DLData ON MasterDates.[ID] = dbo.DLData.DownloadID
                            WHERE dbo.MasterDates.[Date] BETWEEN @From AND @To
                            AND dbo.MasterDates.SiteID = @X)
        ORDER BY dbo.MasterDates.SiteID 

使い分けが面倒くさくないの外条項内です。 地獄に私は全く身に覚えがないのですが知っていただく場合に正しい用語を記述して私の課題です。

Arrgghhセットに基づく論理は私の頭!!

役に立ちましたか?

解決 2

マットウィットフィールドお願いします。sqlservercentral StackExchangeサイトに以下の回答 この問題:

SELECT outerMaster.SiteID as SiteID , dbo.DLData.Product as ProductID
    FROM dbo.MasterDates outerMaster
    JOIN dbo.DLData ON outerMaster.[ID] = dbo.DLData.DownloadID
    WHERE outerMaster.[Date] BETWEEN @From AND @To
    GROUP BY outerMaster.SiteID , dbo.DLData.Product
    HAVING
            SUM(dbo.DLData.Quantity) > 960 OR
            SUM(dbo.DLData.Quantity) > (SELECT SUM(dbo.DLData.Quantity)
                                          FROM dbo.MasterDates innerMaster
                                          JOIN dbo.DLData ON innerMaster.[ID] = dbo.DLData.DownloadID
                                            WHERE innerMaster.[Date] BETWEEN @From AND @To
                                              AND innerMaster.SiteID = outerMaster.SiteID)
    ORDER BY outerMaster.SiteID

RickD たこの答えに ask.sqlteam.com サイト:

--INSERT INTO SiteKeyProducts    
SELECT 
        MD.SiteID as SiteID , 
        DLD.Product as ProductID        
FROM dbo.MasterDates MD      
JOIN dbo.DLData DLD
ON MD.[ID] = DLD.DownloadID
LEFT JOIN (SELECT SiteID, 
                                SUM(dbo.DLData.Quantity) SumMDQuantity
                                FROM dbo.MasterDates
                                JOIN dbo.DLData ON MasterDates.[ID] = dbo.DLData.DownloadID
                                WHERE dbo.MasterDates.[Date] BETWEEN @From AND @To
                                GROUP BY SiteID) as sumMD
ON sumMD.SiteID = MD.SiteID
WHERE MD.[Date] BETWEEN @From AND @To        
GROUP BY MD.SiteID , DLD.Product        
HAVING                
SUM(DLD.Quantity) > 960 OR                
SUM(DLD.Quantity) > sumMD.SumMDQuantity
ORDER BY MD.SiteID

仕事も、もMatts棚に収納されず、テーブルに置Ricks努力にもかかわらず、初期スク以外のリスクにつき意見を表参うになります。Mattsか~2m10sがRicksか~2m40このために最大のライブのデータベースとしても以外に10s試験dbです。

他のヒント

私が持っ声明

でそれを使用しないで、あなたはこのサブクエリに参加したいと思います
SELECT SUM(dbo.DLData.Quantity)
    FROM dbo.MasterDates
    JOIN dbo.DLData ON MasterDates.[ID] = dbo.DLData.DownloadID
    WHERE dbo.MasterDates.[Date] BETWEEN @From AND @To
    AND dbo.MasterDates.SiteID = @X
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top