2016-04-04 6 views
0

私はdbからデータを取り出してMS-Sqlstored procedureを使用して、にsp.netを使用して示しています。それは何ですか。 し1.Getのスキーム名とスキームコードsch_masterテーブルから 2.joinインナー3.最後の取得のための資金に加えて、収益のリリース量を(マックス(QUARTER_ID))を入力するsch_releasesテーブルと結合 sch_detailテーブルと一人ひとり特定の方式コードこと。ここにはstored procedureというクエリがあります。ストアドプロシージャを使用して最大値を取得し、クエリを結合します

ssm.SchemeName, ssm.SchemeCode, 
     (Select ISNULL(SUM(distinct ra.CapitalRelaseAmount + ra.RevenueReleaseAmount),0) from Sch_Releases ra where QuarterID=(Select MAX(QuarterID) from Sch_Releases as ra where [email protected])) AS Releases 
     FROM   
     dbo.Sch_SchemeMaster AS ssm INNER JOIN 
     dbo.Sch_SchemeDetail AS ssd ON ssd.SchemeCode = ssm.SchemeCode INNER JOIN 
     dbo.Sch_Releases AS ra ON ra.SchemeCode = ssm.SchemeCode and [email protected] 
     WHERE [email protected] 
     GROUP BY ssm.SchemeName, ssm.SchemeCode 
     HAVING (ssd.IsCompleted = 0) AND (ssd.IsDeleted = 0) 
     order by ssm.SchemeCode 

が、それはそれは最大を取る不運は、各スキームのコードに関連するため、全体tableないから値を入力します。私の質問で何が間違っているか教えてください。 おかげ

+0

私たちは、テーブル構造を知らないと、あなたは何を期待している結果を?少なくとも、期待される結果を提供する必要があります。 –

答えて

1

このお試しください:

SELECT 
    ssm.SchemeName, 
    ssm.SchemeCode, 
    (Select ISNULL(SUM(ra.CapitalRelaseAmount + ra.RevenueReleaseAmount),0) from Sch_Releases ra where 
    ra.SchemeCode = ssd.SchemaCode AND ra.YearID = @YearId 
    AND QuarterID=(Select MAX(QuarterID) from Sch_Releases as ra2 where ra2.SchemaCode = ra.SchemaCode and [email protected]) 
    ) AS Releases 
FROM   
    dbo.Sch_SchemeMaster AS ssm INNER JOIN 
    dbo.Sch_SchemeDetail AS ssd ON ssd.SchemeCode = ssm.SchemeCode 
WHERE 
    [email protected] 
GROUP BY ssm.SchemeName, ssm.SchemeCode 
HAVING (ssd.IsCompleted = 0) AND (ssd.IsDeleted = 0) 
order by ssm.SchemeCode 
関連する問題