3

以下のテーブル PLE から、各アクティビティでプロジェクトごとの表面積を生成する必要があります。

Activity    Posting Date    Surface Area  Project
---------------------------------------------------------------------
Shearing     01-04-2013     2.34          A   
Bending      01-04-2013     2.34          A 
Assembly     02-04-2013     2.34          B
PC           02-04-2013     5.34          B  
Infill       05-04-2013     5.34          C

私はこれをやろうとしています。

SELECT DISTINCT Project,sum(Project.[Surface Area]) AS TotalShearing 
FROM PLE
WHERE ([Posting Date] BETWEEN @StartDate AND @EndDate)
  AND (Activity = Shearing)
GROUP BY Project

TotalBending, TotalAssembly今、私は右の列になどを表示したいと思いますTotalShearing。しかし、WHERE 条件が既にアクティビティ 'Shearing' に使用されているため、それらを取得する方法がわかりません。これは簡単な作業かもしれませんが、私は SQL を初めて使用するのでヘルプが必要です!

4

4 に答える 4

0

必要なのは、SQLの「Partition By」キーワードです。より正確には、Sum(....) over(Partition by Activity)。これでうまくいくはずです。

于 2013-07-29T11:33:08.723 に答える
0
SELECT DISTINCT Project,
sum(if(Activity = 'Shearing', Project.[Surface Area],0) AS Shearing ,
sum(if(Activity = 'Bending', Project.[Surface Area],0) AS TotalBending, 
sum(if(Activity = 'Assembly', Project.[Surface Area],0) AS TotalAssembly
FROM PLE
WHERE ([Posting Date] BETWEEN @StartDate AND @EndDate)

GROUP BY Project
于 2013-07-29T11:18:16.703 に答える