0

我需要在 SQL Server 中编写一个查询来执行以下操作:

   TABLE cps_ctrl_proc_setor (

      cps_cd_indicador INTEGER  NOT NULL  ,
      cps_dt_ref DATETIME  NOT NULL  ,
      cps_vl_lancamento DECIMAL    )

    CREATE TABLE ind_indicador (
      ind_cd_indicador INTEGER  NOT NULL   IDENTITY,

      ind_nm_indicador VARCHAR(50)  NOT NULL  ,

    )

对于IND_INDICADOR每一个IND_INDICADOR,但在 CPS 表中,我最后得到了 12 个寄存器,每个寄存器IND_INDICADOR代表 12 个月。

我每个月只有 1 个寄存器,我需要带上这样的寄存器:

nm_indicador, january/2013, fev/2013, mar/2013, etc.

不管这几个月有没有记录。

有人可以帮助我吗?

4

1 回答 1

0

首先构建完整的周期范围,然后将这个周期范围加入/应用到您的结果中。这是一个示例,用于获取给定期间的完整月份范围。

DECLARE @from DATE= '20120101';
DECLARE @to DATE= '20121231';

WITH    Dates
          AS ( SELECT   @from AS [date]
               UNION ALL
               SELECT   DATEADD(M, 1, [date])
               FROM     Dates
               WHERE    DATEADD(M, 1, [date]) <= @to )
    SELECT  [date]
           ,CAST(MONTH([date]) AS VARCHAR(10)) + '/' + CAST(YEAR([date]) AS VARCHAR(4)) AS [MonthOfYear]
    FROM    Dates;
于 2013-06-06T13:04:07.680 回答