我有两张桌子需要加入。第一个表包含提供服务的日期和该服务的成本。第二个表包括给定时间段内服务的最大预算。以下服务有两个预算,一个从“2012 年 4 月 2 日”开始,“2013 年 4 月 2 日”结束,但在“2014 年 4 月 2 日”结束的同一天续订。该服务于 2013 年 4 月 15 日进行管理因此,我需要将与服务时间相关的预算:“2013 年 4 月 2 日”附加到“2014 年 4 月 2 日”。由于一个预算在 4 月结束并在 4 月更新 在下面的计划中,两个预算都被加入。
我需要加入 DOSSTART 介于两个日期之间的 start_date 和 end_date。
CREATE TABLE #Service_Budget(
ID int,
SERV_Type int,
Start_DT datetime,
End_DT datetime,
Budget int,
NUMBER_OF_MONTHS_OF_SERVICES int
);
INSERT INTO #Service_Budget VALUES
(13946, 5, '4/2/2012', '4/2/2013', 622.4, 12),
(13946, 5, '4/2/2013', '4/2/2014', 788.4, 12)
CREATE TABLE #Service_Visits(
ID int,
Service_Type int,
DOSStart datetime,
BillableUnits int,
RATE_AMOUNT int
);
INSERT INTO #Service_Visits VALUES
(13946, 5, '4/15/2013', 3,75.5)
SELECT
a.ID,
a.Service_Type,
a.DOSStart,
MONTH(a.DOSStart) AS Month,
YEAR(a.DOSStart) AS Year,
MONTH(b.START_DT) AS Start_Month,
YEAR(b.START_DT) AS Start_Year,
b.Start_DT,
b.End_DT,
a.RATE_AMOUNT,
(a.RATE_AMOUNT * a.BillableUnits) as Total,
b.Budget,
b.NUMBER_OF_MONTHS_OF_SERVICES
FROM #Service_Visits as a join #Service_Budget as b
on a.ID=b.ID
这就是我得到的:
ID Service_Type DOSStart Month Year Start_Month Start_Year Start_DT End_DT RATE_AMOUNT Total Budget NUMBER_OF_MONTHS_OF_SERVICES
13946 5 2013-04-15 00:00:00.000 4 2013 4 2012 2012-04-02 00:00:00.000 2013-04-02 00:00:00.000 75 225 622 12
13946 5 2013-04-15 00:00:00.000 4 2013 4 2013 2013-04-02 00:00:00.000 2014-04-02 00:00:00.000 75 225 788 12
注意两个预算都加入了,注意与 DOSSTART 日期相关的预算。