Группировка результатов хранимой процедуры - PullRequest
1 голос
/ 15 октября 2011

Привет, у меня следующая процедура хранения

`USE [BD_SSEGUA] ИДТИ / * Объект: StoredProcedure [dbo]. [SpAgendaDeSolicitude] Дата сценария: 14.10.2011 16:43:00 * / SET ANSI_NULLS ON ИДТИ SET QUOTED_IDENTIFIER ON ИДТИ - =================================================== - Автор: Роке Рамирес Нахера - Дата создания: 23/03/2011 - Описание: роды заботы - por estatus y año - spAgendaDeSoliciques '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 для зарегистрированных А для Уполномоченного RZ для отклоненных и т. Д.

Я хочу сгруппировать результаты по годам, месяцам, неделям за текущий год. Но единственное поле, которое у меня есть, это datetime, соответствующее дате регистрации, которая находится в другой таблице.

Как я могу решить это? Надеюсь на вашу помощь.

1 Ответ

1 голос
/ 15 октября 2011

, чтобы сгруппировать ваши данные, вы можете создать CTE, чтобы добавить год / месяц / неделю, соответствующий полю datetime, и сделать вашу агрегатную функцию в CTE

, вот пример, где я полагаю, что ваша временная таблица @Повестка дня содержит все необходимые данные:

;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

Надеюсь, это поможет:)

...