Получение квартальных цен на лекарства из набора данных NADA C - PullRequest
0 голосов
/ 09 апреля 2020

Итак, я скачал набор данных NADA C, в котором с течением времени рассматриваются рыночные цены на фармацевтические препараты. Его можно найти здесь: https://data.medicaid.gov/Drug-Pricing-and-Payment/NADAC-National-Average-Drug-Acquisition-Cost-/a4y5-998d/data

Я заинтересован в том, чтобы получить цену за единицу для каждого ND C для всех кварталов в течение 2014 года. Однако существует ряд проблем это мешает мне сделать это. Перед преобразованием дат за квартал я сначала выполнил запрос, чтобы изолировать ND C, за цену за единицу, и дата охватывает временную таблицу:

IF OBJECT_ID('tempdb..#TortelliniExpress') IS NOT NULL DROP TABLE #TortelliniExpress
Select NDC as NDC, NADAC_Per_Unit as NADAC_Per_Unit, 
            convert(date,Effective_Date) as Effective_Date , 
            CONVERT(date,[As of Date]) as As_Of_Date
into #TortelliniExpress
from dbo.NADAC2

Вывод выглядит так:

NDC  |NADAC_Per_Unit |Effective_Date|  As_of_date|

2197590 4.23    2014-02-19  2014-12-03
2197590 4.65    2014-12-04  2014-12-24
2322730 7.12    2014-02-19  2014-06-18
2322730 7.76    2014-06-19  2014-08-06
2322730 7.82    2014-08-20  2014-12-03
2322830 7.22    2014-02-19  2014-04-09
2322830 7.78    2014-08-20  2014-11-26
2322830 8.95    2014-12-04  2014-12-31
2322930 7.79    2014-02-19  2014-06-18
2322930 8.47    2014-08-20  2014-11-12
2322930 8.49    2014-06-19  2014-07-09
2323130 13.03   2014-01-22  2014-12-31
2323560 6.26    2014-05-21  2014-12-03
2323830 7.17    2014-02-19  2014-05-14
2323830 7.82    2014-06-19  2014-07-09
2323830 7.82    2014-08-20  2014-10-08
2323830 8.99    2014-12-04  2014-12-10
2323930 7.76    2014-02-19  2014-03-19
2323930 8.46    2014-06-19  2014-07-02
2323930 8.47    2014-08-20  2014-11-19
2324001 7   2014-09-17  2014-12-03
2324030 7   2014-09-17  2014-10-29
2324033 7   2014-09-17  2014-10-15
2324090 7   2014-09-17  2014-12-10

Как вы можете заметить, проблема в том, что даты не структурированы так, что следующая дата вступления в силу является предшествующей датой, и поэтому я не могу получить выходные данные, которые содержат цена за квартал 1,2,3,4 года. При выполнении этого запроса:

IF OBJECT_ID('tempdb..#quarterspans') IS NOT NULL DROP TABLE #quarterspans
select distinct NDC, Nadac_per_unit,
       DATEPART(Year,Effective_Date) as Start_Year,
       DATEPART(Year,As_Of_Date) as End_Year,
       DATEPART(QUARTER,Effective_Date) as Start_Quarter,
       DATEPART(QUARTER,As_Of_Date) as End_Quarter
into #quarterspans
from  #TortelliniExpress
group by NDC,
         Nadac_per_unit,
         DATEPART(Year,Effective_Date),
         DATEPART(Year,As_Of_Date),
         DATEPART(QUARTER,Effective_Date),
         DATEPART(QUARTER,As_Of_Date)
order by NDC asc,NADAC_Per_Unit;

Кварталы выстраиваются не совсем так, как хотелось бы. Что именно мне здесь делать?


РЕДАКТИРОВАТЬ

Так что я думаю, что, возможно, решил проблему. Благодаря комментариям я отредактировал свой код так:

IF OBJECT_ID('tempdb..#TortelliniExpress') IS NOT NULL DROP TABLE #TortelliniExpress
Select NDC as NDC, NADAC_Per_Unit as NADAC_Per_Unit, 
            convert(date,Effective_Date) as Effective_Date , 
            CONVERT(date,[As of Date]) as As_Of_Date
into #TortelliniExpress
from dbo.NADAC2;

IF OBJECT_ID('tempdb..#table2') IS NOT NULL DROP TABLE #table2
select NDC,nadac_per_unit,effective_date,Max(As_Of_Date) as As_Of_Date
into #table2
from #TortelliniExpress
where YEAR(Effective_Date) = 2014 AND
      YEAR(As_Of_Date) = 2014
group by NDC,nadac_per_unit,effective_date
order by NDC, NADAC_Per_Unit;



IF OBJECT_ID('tempdb..#quarterspans') IS NOT NULL DROP TABLE #quarterspans
select NDC, Nadac_per_unit,
       DATEPART(Year,Effective_Date) as Start_Year,
       DATEPART(Year,As_Of_Date) as End_Year,
       DATEPART(QUARTER,Effective_Date) as Start_Quarter,
       DATEPART(QUARTER,As_Of_Date) as End_Quarter
into #quarterspans
from  #TortelliniExpress
order by NDC asc,NADAC_Per_Unit;


select NDC,avg(NADAC_Per_Unit) as Per_Unit_price,End_Year,End_Quarter 
from #quarterspans
group by NDC,
         End_Year,
         End_Quarter
order by NDC,End_Year,End_Quarter;
...