ここでは、次のようにデータを取得しようとしています。(EXPECTED)
SQL ServerストアドプロシージャのSUM()
ID | Project | SC | PO | INV
---+---------+------+----+-----
1 | test1 | NULL | 1 | NULL
2 | test2 | NULL | 1 | NULL
として
ID | Project | SC | PO | INV
---+---------+------+------+-----
1 | test1 | NULL | 1 | NULL
2 | test2 | NULL | NULL | NULL
が、私のストアドプロシージャあたりのように私は、出力を取得しています多分、私の内側のクエリからの結果は、POがあまりにもPO test2
としてProject test1
のために受け取った表示しています。それは起こらないはずです。プロジェクト 'test1'はBudgetDetails
テーブルとDetails
テーブルの両方に存在するためです。
私が書いたsum()クエリを修正する助けがありますか?
SELECT
BD.ID, BD.Project,
(SELECT SUM(Amount) AS SC
FROM Details (NOLOCK) a
INNER JOIN BudgetDetails (NOLOCK) b ON a.Project = b.Project
WHERE ProcurementStatus = 'SC' AND a.Project = b.Project) AS SC,
(SELECT SUM(Amount) as PO
FROM Details (NOLOCK) a
INNER JOIN BudgetDetails(NOLOCK) b ON a.Project = b.Project
WHERE ProcurementStatus = 'PO' AND a.Project = b.Project) AS PO,
(SELECT SUM(Amount) as INV
FROM Details (NOLOCK) a
INNER JOIN BudgetDetails(NOLOCK) b ON a.Project = b.Project
WHERE ProcurementStatus = 'INV' AND a.Project = b.Project) AS INV
FROM
BudgetDetails (NOLOCK) BD
WHERE
BD.Quarter = @Quarter AND BD.Year = @Year
GROUP BY
BD.ID, BD.Project
データを提供することはできますか? – Xedni
@Xedni入力データは四半期と年(1,2016)です – beginner
「BudgetDetails」テーブルと「Details」テーブルのデータがどのように見えるかを意味します。あなたのクエリには幾分奇妙なものがありますが、あなたのデータとソーステーブルがどのようなものか分からずに推測するだけです。 – Xedni