我想查询2个表财务日历表(CalendarDate-RNZCDTE,FiscalYear-RNZFSYR,FiscalPeriod-RNZFSPD)和回扣表,以根据上次发票日期获得每个期间的Priceperunit金额。我可以获得最后一个发票日期和购买发生期间的金额,但挑战是每个期间可能没有值,所以我需要递归或从之前的perriods中选择第一个非空值。不确定如何在不构建一些奢侈的案例结构的情况下递归。
每个项目必须具有每个期间的值, 谢谢
表1
CREATE TABLE [dbo].[RenziFiscalDates](
[RNZCDTE] [numeric](8, 0) NULL,
[RNZFSYR] [numeric](4, 0) NULL,
[RNZFSPD] [numeric](2, 0) NULL)
表2-注意DID是购买的商品编号
CREATE TABLE [dbo].[PurchaseRebate](
[DID] [nvarchar](50) NULL,
[PricePerUnitDel] [money] NULL,
[PricePerUnitFOB] [money] NULL,
[InvoiceDate] [smalldatetime] NULL,
[ReceivedDate] [smalldatetime] NULL,
当前查询让我获得maxdate和价格信息
SELECT
DID,
MAX(CONVERT(VARCHAR(8), InvoiceDate, 112)) AS RZTMXDT,
MONTH(InvoiceDate)RZTCALY,
YEAR(InvoiceDate)as RZTCALM,
AVG(PricePerUnitDel) AS RZRDELC,
AVG(PricePerUnitFOB) AS RZTFOBC
FROM PurchaseRebate
WHERE (InvoiceDate > '20131231') AND (DID < '99999')
group by DID,YEAR(InvoiceDate),MONTH(InvoiceDate)
Order by DID
每个会计期间的数据缺失值
DID RNZFSYR RNZFSPD RZRDELC RZTFOBC
10040 2014 3 3.04 3.04
10040 2014 5 3.04 3.04
10040 2014 6 3.04 3.04
10040 2014 6 3.04 3.04
10040 2014 7 3.04 3.04
10040 2014 9 3.04 3.04
10040 2014 11 3.12 3.12
10040 2014 11 3.12 3.12
10040 2014 12 3.12 3.12
10040 2015 2 3.12 3.12
10040 2015 3 3.12 3.12
10040 2015 4 3.12 3.12
10040 2015 5 3.12 3.12
10040 2015 6 3.12 3.12
10045 2014 4 2.34 2.34
Any help is greatly appreciated
RDBMS - 是SQL Server
不确定合并在这种情况下是否有效或如何正确使用
有