2015-04-23 171 views
0

我在SQL Server 2012中編寫存儲過程,並在讀取存儲過程在匹配所有條件和連接條件後將返回的行數時遇到問題。如何從存儲過程中獲取返回行數 - SQL Server 2012

我的存儲過程是:

SELECT DISTINCT 
    COUNT(crs.CourseId) OVER() AS Recordcounts, 
    crs.CourseId, 
    crs.CourseName, 
    crs.CourseDescription, 
    (SELECT CourseGroupName FROM CourseGroup cgrp 
    WHERE cgrp.CourseGroupId = crs.CourseGroupId) AS Category 
FROM 
    Courses crs 
INNER JOIN 
    CourseRequests creq ON crs.CourseId = creq.CourseId 
WHERE 
    crs.Coursename <> '''' 

它針對的條件的一個返回16爲「Recordcounts」,但在實際中,結果只有3行。

有人可以幫我嗎?

感謝

下面的截圖將更加清晰的思路有關問題的條件之一:enter image description here

+0

我沒有得到你。如果它返回的記錄比預期的多,那麼查詢有問題。 SP如何影響這一點?另外,我沒有看到一組聲明,所以我猜測有16個記錄滿足過濾器,所有的RecordCount都是1.對嗎? – Pratik

+0

它正在返回正確的記錄,但「Recordcounts」中的值是16,其中實際結果只有3行,所以「Recordcounts」應該是3,但我不知道如何得到它。 – Sachin

+0

你可以試試嗎? SELECT DISTINCT計數(crs.CourseId)以上(由crs.CourseId分區)作爲Recordcounts, crs.CourseId, crs.CourseName, crs.CourseDescription, (從CourseGroup CGRP選擇CourseGroupName其中cgrp.CourseGroupId = crs.CourseGroupId)作爲分類 FROM課程CRS 內對crs.CourseId = creq.CourseId 加入CourseRequests CREQ其中crs.Coursename <>「」「」 – Pratik

回答

0

試試這個:

;with cte as(
SELECT distinct 
    crs.CourseId, 
    crs.CourseName, 
    crs.CourseDescription, 
    (SELECT CourseGroupName FROM CourseGroup cgrp 
    WHERE cgrp.CourseGroupId = crs.CourseGroupId) AS Category 
FROM 
    Courses crs 
INNER JOIN 
    CourseRequests creq ON crs.CourseId = creq.CourseId 
WHERE 
    crs.Coursename <> '''') 

Select *, (select COUNT(CourseId) from cte) AS Recordcounts 
from cte