2011-10-14 139 views
1

您好我有下一個存儲過程分組存儲過程的結果

使用`[BD_SSEGUA] GO /* 對象:StoredProcedure的[DBO] [spAgendaDeSolicitudes]腳本日期:10/14/2011十六點43分零零秒 */ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO - ======================== ===================== - 作者: RoqueRamírezNájera - 創建日期:23/03/2011 - 描述:Genera tabla de solicitudes - por estatus yaño - spAgendaDeSolicitudes'2010' - ========== ===================================

ALTER PROCEDURE [dbo].[spAgendaDeSolicitudes] 

@anio varchar(5) 
AS 
    DECLARE 

    @ContR  int, 
    @ContRA  int, 
    @ContRZ  int, 
    @ContB  int, 
     @ContC  int, 
    @total  int 

    DECLARE 

    @agenda table (periodo datetime, R int, A int, RZ int, B int, C int, TOTAL int) 


     BEGIN 



SET NOCOUNT ON; 

SELECT @ContR = COUNT (fiIdSolicitud) FROM Solicitud WHERE fiEdoSolicitud = 1 and fiAnioSolicitud = @anio 
SELECT @ContRA = COUNT (fiIdSolicitud) FROM Solicitud WHERE fiEdoSolicitud = 2 and fiAnioSolicitud = @anio 
SELECT @ContRZ = COUNT (fiIdSolicitud) FROM Solicitud WHERE fiEdoSolicitud = 3 and fiAnioSolicitud = @anio 
SELECT @ContB = COUNT (fiIdSolicitud) FROM Solicitud WHERE fiEdoSolicitud = 4 and fiAnioSolicitud = @anio 
SELECT @ContC = COUNT (fiIdSolicitud) FROM Solicitud WHERE fiEdoSolicitud = 5 and fiAnioSolicitud = @anio 

SET @total = @ContR + @ContRA + @ContRZ + @ContB + @ContC 

INSERT INTO @agenda (R, A, RZ, B, C, TOTAL) 
VALUES(@ContR,@ContRA,@ContRZ,@ContB,@ContC,@total) 

SELECT R, A, RZ, B, C, TOTAL FROM @agenda END 

`

我使用這個sp填充telerik radgrid存儲過程得到的結果是每年按狀態排序的請求數,這個結果被填充到telerik radgrid中。 R用於註冊 A用於授權 RZ用於拒絕等。

我想要做的是將結果從當年的每年,每月,每週進行分組。 但我唯一的領域是一個日期時間對應於另一個表中的註冊日期。

我該如何解決這個問題? 希望你的幫助。

回答

1

到組數據,您可以創建一個CTE以年/月/周增加,對應於日期字段,然後進行聚合函數在CTE

在這裏,我想一個例子,你的臨時表@agenda包含所有必要的數據:

;WITH myCTE AS 
(
    SELECT 
     periodo, 
     YEAR(periodo) AS yearPart, 
     MONTH(periodo) AS monthPart, 
     DATEPART(WEEK, periodo) AS weekPart, 
     R, A, RZ, B, C, 
     TOTAL int 
    FROM @agenda 
) 
SELECT 
    yearPart, monthPart, weekPart, 
    SUM(R) AS R, SUM(A) AS A, SUM(RZ) as RZ, SUM(B) AS B, SUM(C) AS C, 
    SUM(TOTAL) AS TOTAL 
FROM myCTE 
GROUP BY yearPart, monthPart, weekPart 

希望這有助於:)