每月查询结果而不是整个期间

时间:2013-12-01 23:15:24

标签: sql sql-server group-by

我现在基本上得到的是6个月的时间    患者 - 6个月内的事件数量 1 2 3 4 5

我想得到的是

PATIENT - 第1个月的事件数量 - ...第2个月 - 第3个月......到第6个月 1 2 3 4 5

结果中的哪一个是相同的,只是它们按月划分而不是一列

CREATE PROCEDURE PMP.TOP5BonosVencidos
(
    @pComienzo_Semestre datetime = null
)
AS
BEGIN

select TOP 5 PACIENTE_DOCUMENTO, PACIENTE_NOMBRE, PACIENTE_APELLIDO, COUNT(*)         
from PMP.BONO_FARMACIA, PMP.PACIENTE, PMP.COMPRA_BONO
where CAST(FECHA_VENCIMIENTO AS DATE) >= CAST(@pComienzo_Semestre AS DATE) AND
CAST(FECHA_VENCIMIENTO AS DATE) < DATEADD(month,6,CAST(@pComienzo_Semestre AS DATE)) AND
PMP.PACIENTE.PACIENTE_ID = COMPRA_BONO_PACIENTE_ID AND
COMPRA_BONO_CANTIDAD_FARMACIA > 0 AND
COMPRA_BONO_ID = COMPRA_BONO
group by PACIENTE_DOCUMENTO, PACIENTE_NOMBRE, PACIENTE_APELLIDO
order by COUNT(*) DESC
END
GO

1 个答案:

答案 0 :(得分:0)

您只需将月份添加到分组中:

select TOP 5 PACIENTE_DOCUMENTO, PACIENTE_NOMBRE, PACIENTE_APELLIDO, DATEPART(Month, FECHA_VENCIMIENTO) as [Month], COUNT(*)         
from PMP.BONO_FARMACIA, PMP.PACIENTE, PMP.COMPRA_BONO
where CAST(FECHA_VENCIMIENTO AS DATE) >= CAST(@pComienzo_Semestre AS DATE) AND
CAST(FECHA_VENCIMIENTO AS DATE) < DATEADD(month,6,CAST(@pComienzo_Semestre AS DATE)) AND
PMP.PACIENTE.PACIENTE_ID = COMPRA_BONO_PACIENTE_ID AND
COMPRA_BONO_CANTIDAD_FARMACIA > 0 AND
COMPRA_BONO_ID = COMPRA_BONO
group by PACIENTE_DOCUMENTO, PACIENTE_NOMBRE, PACIENTE_APELLIDO, DATEPART(Month, FECHA_VENCIMIENTO)

我删除ORDER BY,因为我不确定在这种情况下应该订购什么 - 请自行添加相关订单。