簡體   English   中英

每月分配有關開始日期和結束日期的金額

[英]Distribute amount monthly with respect to start date and end date

我有桌子

Project_ID
Start_Date
End_Date
BUDGET_Amount

例如:

我需要使用SQL返回12行,每行代表兩個日期之間的月份,並且預算值= 1200 /兩個日期之間的月份數“ 12” = 100 $

所以結果就是這樣Proj_ID,START_DATE,END_DATE,AMOUNT

  • “1”, “1-JAN-2017”, “31-JAN-2017”,100 $
  • “1”, “1-FEB-2017”, “27-FEB-2017”,$ 100米
  • “1”, “1-MAR-2017”, “31-MAR-2017”,100 $
  • “1”, “1-APR-2017”, “31-APR-2017”,100 $
  • “1”, “1-MAY-2017”, “31-MAY-2017”,100 $
  • “1”, “1-JUN-2017”, “31-JUN-2017”,100 $
  • “1”, “1-JUL-2017”, “31-JUL-2017”,100 $
  • “1”, “1-AUG-2017”, “31-AUG-2017”,100 $
  • “1”, “1-SEP-2017”, “31-SEP-2017”,100 $
  • “1”, “1-OCT-2017”, “31-OCT-2017”,100 $
  • “1”, “1-NOV-2017”, “31-NOV-2017”,100 $
  • “1”, “1-DEC-2017”, “31-DEC-2017”,100 $

使用通用表表達式(CTE),您可以生成給定范圍內的日期。 這將生成您需要的輸出:

;with mycte as
     (
    select cast('1 jan 2017' as datetime) as DateValue
    union all
    select DATEADD(MONTH,1, DateValue)
    from    mycte  
    where   DATEADD(MONTH,1, DateValue) <= '31 dec 2017'
    )

   select 
   1 Proj_ID,
   REPLACE(CONVERT(VARCHAR(11), DateValue, 106), ' ', '-')  START_DATE ,
   REPLACE(CONVERT(VARCHAR(11), DATEADD(DAY, -1, DATEADD(MONTH,1, DateValue))), ' ', '-')   END_DATE  ,
   '100$' AMOUNT
   from    mycte

這將顯示幾個月的第一天和最后幾天。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM