sql-server 通过将季度行重复3次,将季度数据转换为月度数据

oxcyiej7  于 2022-10-31  发布在  其他
关注(0)|答案(2)|浏览(169)

我想知道如何重复这些行中的每一行3次,让他们从季度到月份。
我需要在前2列重复相同的值,但根据第三列的季度,我需要该季度的其他月份,即第一行“31/01/2021”和“28/02/2021”

因此,所需的输出如下所示:

c2e8gylq

c2e8gylq1#

WITH TABLE_DATA(CODE,VAL,DATED)AS
(
  SELECT 'R01',777,'2021-03-31' UNION ALL
  SELECT 'R01',833,'2021-06-30' UNION ALL
  SELECT 'R01',882,'2021-09-30'
)
SELECT D.CODE,D.VAL,CAST(DATEADD(MONTH,-X.PLACEHOLDER,D.DATED)AS DATE)AS DATED,X.PLACEHOLDER
FROM TABLE_DATA AS D
CROSS JOIN
(
  SELECT 0 AS PLACEHOLDER
    UNION ALL
  SELECT 1
   UNION ALL
  SELECT 2
)X
ORDER BY D.CODE,DATED;

请检查一下这个查询是否适合您。TABLE_DATA是您提供的数据示例

jxct1oxe

jxct1oxe2#

另一个选项是通过交叉应用

Select A.Code
      ,A.Value 
      ,B.Date
 From YourTable A
 Cross Apply ( values (EOMonth(dateadd(MONTH,-2,A.Date)))
                     ,(EOMonth(dateadd(MONTH,-1,A.Date)))
                     ,(EOMonth(dateadd(MONTH,-0,A.Date)))
             ) B(Date)

结果

相关问题