0

我写了两个程序;一种是对所提供服务的总成本求和,另一种是提取服务的预计预算。预算可以每年或每六个月更新一次。我在加入这些计划时遇到了麻烦,因此我可以按月计算用于每个波动服务的预算百分比。

预计预算方案

SELECT 
ChildID,
WAIVER_SERVICES,
START_DT,
END_DT,
RATE_PER_UNIT_OF_SERVICE,
PROJECTED_COST_PER_MONTH
FROM [ECMS_BACKUP].[dbo].[B2H_DSP]
where CLT_NBR=10177
and WAIVER_SERVICES NOT IN (1,10,11,12) 
and WAIVER_PROGRAM=2

我带回来的预算数据集如下所示:

  CREATE TABLE Budget  (
    ChildID int,
   WAIVER_SERVICES      int,
    START_DT date, 
    END_DT date,
    RATE_PER_UNIT_OF_SERVICE int(30),
    PROJECTED_COST_PER_MONTH 
    ); 
INSERT INTO Budget VALUES 

(10177, 2,  '06/01/12', '06/01/13', 13.23,  158.76),
(10177, 3,  '06/01/12', '06/01/13', 13.23,  211.68),
(10177, 5,  '06/01/12', '06/01/13', 19.45,  466.8),
(10177, 8,  '06/01/12', '06/01/13', 236.7,  473.4),
(10177, 9,  '06/01/12', '06/01/13', 19.55,  312.8),
(10177, 2,  '06/03/13', '06/03/14', 13.23,  158.76),
(10177, 3,  '06/03/13', '06/03/14', 13.23,  211.68),
(10177, 5,  '06/03/13', '06/03/14', 19.45,  466.8),
(10177, 6,  '06/03/13', '06/03/14', 55.68,  222.72),
(10177, 8,  '06/03/13', '06/03/14', 236.7,  473.4),
(10177, 9,  '06/03/13', '06/03/14', 19.55,  312.8)

请注意,START_DT 和 END_DT 不是按月设置,而是按年设置。

提供的服务计划

select 
a.ChildID,
b.WAIVER_SERVICES,
 month(a.DOSStart) as Month, 
 YEAR(a.DOSStart) as Year,
sum(b.RATE_AMOUNT)as total
from 
    [ECMS_BACKUP].[dbo].[B2H_SummaryForms]a
left JOIN ECMS_BACKUP.dbo.B2H_RATE b ON a.RateCode=b.RATE_CODE
where DOSStart>='2013-01-01' AND DOSStart<'2013-06-30'
group by ChildID, month(a.DOSStart), YEAR(a.DOSStart),WAIVER_SERVICES
order by childid,  month(a.DOSStart), YEAR(a.DOSStart),WAIVER_SERVICES

我带回的 Services Provided 数据集如下所示:

 CREATE TABLE Provided  (
   ChildID int,
   WAIVER_SERVICES      int,
   Month int, 
    Year int,
   total  int,
    ); 
INSERT INTO Provided VALUES 
('10177',   3,  3,  2013,   13.23),
('10177',   5,  3,  2013,   77.8),
('10177',   8,  3,  2013,   236.7),
('10177',   9,  3,  2013,   19.55),
('10177',   3,  4,  2013,   13.23),
('10177',   5,  4,  2013,   19.45),
('10177',   5,  5,  2013,   19.45),
('10177',   8,  5,  2013,   236.7),
('10177',   9,  5,  2013,   19.55),
('10177',   5,  6,  2013,   19.45),
('10177',   8,  6,  2013,   236.7),
('10177',   3,  8,  2012,   17.2),
('10177',   3,  10, 2012,   13.23),
('10177',   8,  10, 2012,   473.4),
('10177',   9,  10, 2012,   19.55),
('10177',   2,  11, 2012,   13.23),
('10177',   3,  11, 2012,   13.23)

同样,我无法加入这两个数据集以获得看起来像这样的东西

     ChildID  WAIVER_SERVICES Month/Year services_provided Budget % used      

     10177         3             12/2012          125         125   100% 

     10177         3              1/2013          75          125    60%        

     10177         3              2/2013          100         175    57% 

     10177         9              1/2013          50           50    100%            

     10177         9              5/2013          800         950    84% 

非常感谢任何帮助!

4

1 回答 1

1

不确定您的结果集是否包含确切的预期值。如果它只是一个示例值,那么您可以加入两个表,例如 -

选择 b.ChildID,
        b.WAIVER_SERVICES,
        CAST(p.[Month] AS VARCHAR(20)) + '/' + CAST(p.[Year] AS VARCHAR(20))
        '月/年',
        SUM(p.total) services_provided,
        CAST(b.RATE_PER_UNIT_OF_SERVICE AS FLOAT) / CAST(b.PROJECTED_COST_PER_MONTH AS FLOAT)
        * 100 '预算百分比使用'
 从预算 b
INNER JOIN 提供 p ON p.ChildID = b.ChildID AND p.WAIVER_SERVICES = b.WAIVER_SERVICES
 通过...分组
        b.ChildID,
        b.WAIVER_SERVICES,
        CAST(p.[Month] AS VARCHAR(20)) + '/' + CAST(p.[Year] AS VARCHAR(20)),
        CAST(b.RATE_PER_UNIT_OF_SERVICE AS FLOAT) / CAST(b.PROJECTED_COST_PER_MONTH AS FLOAT) * 100
于 2013-08-09T18:35:49.860 回答