簡體   English   中英

SQL 如果下個月的列值不存在,則服務器查詢以獲取上個月的數據

[英]SQL Server query to get the data from previous month if the column value is not present in next month

我有一張桌子,其中包含每個月餐廳的許多菜單項。 並且只要項目數量發生變化,表格就會更新。

我想更改表或制作一個新表以獲取每個月的項目值。

例如。 如果最近一個月是四月

餐廳 項目數
一個 20 2021 年 1 月 1 日
一個 15 2021 年 1 月 21 日
12 2021 年 1 月 1 日
C 30 2021 年 2 月 1 日
一個 22 2021 年 3 月 31 日
15 2021 年 4 月 1 日

我希望新表具有上述行加上與上個月具有相同數據的缺失月份

餐廳 項目數
一個 20 2021 年 1 月 1 日
一個 15 2021 年 1 月 21 日
一個 15 2021 年 2 月 21 日
一個 22 2021 年 3 月 1 日
一個 22 2021 年 4 月 1 日
12 2021 年 1 月 1 日
12 2021 年 2 月 1 日
12 2021 年 3 月 1 日
15 2021 年 4 月 1 日
C 30 2021 年 2 月 1 日
C 30 2021 年 3 月 31 日
C 30 2021 年 4 月 1 日

感謝幫助家伙贊賞

這回答了問題的原始版本。

假設該month存儲為該月的第一天的日期,那么一個簡單的方法使用遞歸 CTE:

with cte as (
      select restaurant, num_items, month,
             dateadd(month, -1,
                     coalesce(lead(month) over (partition by restaurant order by month),
                              max(month) over ()
                             )
                    ) as end_month
      from t
      union all
      select restaurant, num_items, dateadd(month, 1, month), end_month
      from cte
      where month < end_month
     )
select *
from cte
order by restaurant, month;

是一個 db<>fiddle。

暫無
暫無

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

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