基于年月的标志值和另一列的值

时间:2018-03-16 13:33:27

标签: sql

我有一个数据规范,其中包含Id(会员ID),Diag_cd(诊断代码),Category_Nm,Year_Mo(年和月)和CancerFlag。我想要做的是添加一个新的列,确定诊断的第一个月为0,即CancerFlag = 1.诊断前的月份为-1,诊断前的两个月为-2,依旧等等。 ......诊断后的月份为1,诊断后的两个月将为2,依此类推...... 到目前为止,这是我的代码:

    SELECT a.Id, Diag_cd, Category Name, Year_mo
      , CancerFlag = CASE WHEN Categroy_Name like '%cancer of breast%'
      and Diag_desc <> 'UNKOWN DIAGNOSIS'
      and Year_NBR = 2014 THEN 1 ELSE 0 END
    FROM #member AS a
    INNER JOIN Mini..Fact as fc on a.Id = f.Id
    INNER JOIN Mini..Diagnosis as d on fc.Diag_cd = d.Diag_cd
    INNER JOIN Mini..Date as d dt on fc.Dt_Id = dt.Dt_Id

我想要的输出应该是这样的:

Desired Output

粗体列是我无法获得的。对此的帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

有些事情不明确:

  1. 哪个字段包含有关诊断何时发生的信息?
  2. 什么是Year_mo?
  3. 当你在谈论&#34;诊断的第一个月&#34;等等,你的参考点是什么,例如如果我今天打电话给sql并且诊断时间是5周前,这是否意味着它是+1,或者是数字化日期和另一个时间点之间的比较?
  4. 你如何计算月份 - 你是说两个日期之间有多少个日历月或4.2周的多少个大小?即如果日期是2017年5月10日,参考点是2017年4月25日,那么它是+1(即4月到5月)还是0,因为它们之间不到一个月?