我使用db
MS-Sql
从我的stored procedure
获取数据,并使用crystal report
将其显示在sp.net
中。它能做什么。
1.get sch_master
表中的方案名称和方案代码
2.加入sch_detail
表
3.内联接sch_releases
表以获得每个特定方案代码的最后输入资本加上收入释放金额(Max(quarter_id))。这是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 ra.YearID=@YearID)) 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 ra.YearID=@YearID
WHERE ssd.YearID=@YearID
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 ra2.YearID=@YearID)
) AS Releases
FROM
dbo.Sch_SchemeMaster AS ssm INNER JOIN
dbo.Sch_SchemeDetail AS ssd ON ssd.SchemeCode = ssm.SchemeCode
WHERE
ssd.YearID=@YearID
GROUP BY ssm.SchemeName, ssm.SchemeCode
HAVING (ssd.IsCompleted = 0) AND (ssd.IsDeleted = 0)
order by ssm.SchemeCode