2016-01-24 88 views
0

我有一個存儲過程從存儲過程兩個結果在MS SQL Server 2008 R2

CREATE PROCEDURE [dbo].[Sp_getdistrictreport] 
    -- Add the parameters for the stored procedure here 
    @DistrictName NVARCHAR(50) 
AS 
    BEGIN 
     -- SET NOCOUNT ON added to prevent extra result sets from 
     -- interfering with SELECT statements. 
     SET nocount ON; 

    -- Insert statements for procedure here 
    SELECT a.talukname, 
     Count (DISTINCT b.globalid) AS Samples_Collected 
    FROM dbo.village a WITH (INDEX ([S22_idx])) 
     INNER JOIN dbo.gridpoint_1 b 
       ON a.shape.Stintersects(b.shape) = 1 
     INNER JOIN dbo.gridpoint_1__attach c 
       ON b.globalid = c.rel_globalid 
    WHERE districtname = @DistrictName 
    GROUP BY a.talukname 
END 

這將導致

TalukName    Samples_Collected 
Heggadadevankote  | 1 
Hunsur     | 6 
Krishnarajanagara  | 4 
Mysore     | 4 
Tirumakudal - Narsipur | 1 

但我想多一個列到這個結果(Total_SAMPLE ),它從第一個INNER JOIN獲得的數據與STintersect的結果。請幫我修改存儲過程。

+0

也許只添加'COUNT(*)OVER()AS TotalSample'? –

+0

您可以添加示例輸出/預期輸出 – TheGameiswar

回答

0

我得到了答案,但它需要7.05分鐘的結果。任何人都可以幫助改善執行時間或任何其他方法。

PROCEDURE [dbo].[sp_GetDistrictReportForDashboard] 
    -- Add the parameters for the stored procedure here 
    @DistrictName nvarchar(50) 
AS 
BEGIN 

SET NOCOUNT ON; 

SELECT samples_collected.talukname,sample_count,TotalSamples from 
(
SELECT a.TalukName talukname, COUNT (DISTINCT b.GlobalID) sample_count 
FROM dbo.VILLAGE a WITH (INDEX ([S22_idx])) , DBO.GRIDPOINT_1 b , dbo.GRIDPOINT_1__ATTACH c 
WHERE a.SHAPE.STIntersects(b.Shape)=1 
and b.GlobalID=c.REL_GLOBALID 
and [email protected] 
GROUP BY a.TalukName 
) samples_collected, 
(
SELECT a.TalukName talukname,COUNT (DISTINCT b.GlobalID) TotalSamples 
FROM dbo.VILLAGE a 
INNER JOIN 
dbo.GRIDPOINT_1 b WITH (INDEX ([S26_idx])) ON a.SHAPE.STIntersects(b.Shape)=1 
WHERE [email protected] 
GROUP BY a.TalukName 
) total 
WHERE samples_collected.talukname=total.talukname 

END 

結果

talukname     sample_count TotalSamples 
Heggadadevankote   |  1 |  55001 
Hunsur      |  6 |  31316 
Krishnarajanagara   |  4 |  34297 
Mysore      |  4 |  18168 
Tirumakudal - Narsipur  |  1 |  38668 
+0

請幫助我改進查詢的性能 – user3210732

相關問題