首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让会员有一致的医生来访,在第一次探视后直到分娩之日。

让会员有一致的医生来访,在第一次探视后直到分娩之日。
EN

Stack Overflow用户
提问于 2022-04-19 18:18:28
回答 2查看 60关注 0票数 0
代码语言:javascript
复制
  SELECT DISTINCT
  DEL.BABY_ID, 
  DEL.MOTHER_ID, 
  MIN(DEL.CHECK_VISIT_DATE) OVER (PARTITION BY DEL.MOTHER_ID)  AS  Del_FIRST_DATE,
  (DEL.CHECK_VISIT_DATE)    VISIT_DATE,
  DEL.BABY_BIRTH_DATE,
  CASE ( I want to show the DEL.MOTHER_ID Who have a visit date every month, after the 
  Del_FIRST_DATE up up to the DEL.BABY_BIRTH_DATE and THEN LABEL AS 'SATISFACTORY'
 FROM FT_DEL_SUMMARY AS DEL

输出:

代码语言:javascript
复制
 Del_First_Date Visit_Date  Delivery Date 
 8/19/2021       8/19/2021   11/29/2021
 8/19/2021       9/16/2021   11/29/2021
 8/19/2021       10/19/2021  11/29/2021
 8/19/2021       10/28/2021   11/29/2021
 8/19/2021      11/4/2021     11/29/2021
 8/19/2021     11/12/2021     11/29/2021
 8/19/2021     11/17/2021     11/29/2021
 8/19/2021      11/23/2021    11/29/2021
8/19/2021       11/29/2021    11/29/2021

例如,上述日期将是一个令人满意的结果,因为第一次访问日期是2021年8月19日,然后是9/16,10/19。直到交货之日。因此,这是一个令人满意的结果。然而,当每个月在第一次访问日期之后,一直到交货日期都没有访问日期,那就不满意了。

从上面,我希望能够创建一个案例陈述或任何逻辑,将显示的成员有一个一致的医生访问日期后,他们第一次访问,直到交付日期。

EN

回答 2

Stack Overflow用户

发布于 2022-04-20 16:41:08

这对于SQL来说非常复杂。每个病人从第一次探视到分娩的月数是不同的。我认为最简单的方法是计算每次就诊的天数,然后计算出每名病人的最高天数,如果> 30或31,则不能令人满意。

代码语言:javascript
复制
WITH    
    VISITS AS (
        SELECT
            DEL.BABY_ID,
            DEL.MOTHER_ID,
            DEL.CHECK_VISIT_DATE AS VISIT_DATE
        FROM    
            FT_DEL_SUMMARY AS DEL
        UNION
        SELECT  
            DEL.BABY_ID,
            DEL.MOTHER_ID,
            DEL.BABY_BIRTH_DATE
        FROM
            FT_DEL_SUMMARY AS DEL
    ),
    INTERVALS AS (
        SELECT
            V.BABY_ID,
            V.MOTHER_ID,
            MIN(V.VISIT_DATE) OVER (PARTITION BY V.BABY_ID, V.MOTHER_ID) AS FIRST_VISIT_DATE,
            MAX(V.VISIT_DATE) OVER (PARTITION BY V.BABY_ID, V.MOTHER_ID) AS BABY_BIRTH_DATE,
            V.VISIT_DATE - LAG(V.VISIT_DATE) OVER (PARTITION BY V.BABY_ID, V.MOTHER_ID ORDER BY V.VISIT_DATE) AS DAYS_SINCE_PREV_VISIT
        FROM
            VISITS V
    )
SELECT  
    BABY_ID,
    MOTHER_ID,
    FIRST_VISIT_DATE,
    BABY_BIRTH_DATE,
    CASE 
        WHEN MAX(DAYS_SINCE_PREV_VISIT) > 31 THEN 'UNSATISFACTORY'
        ELSE 'SATISFACTORY'
    END AS SATISFACTORY_CODE
FROM
    INTERVALS
GROUP BY
    BABY_ID,
    MOTHER_ID,
    FIRST_VISIT_DATE,
    BABY_BIRTH_DATE
/
票数 1
EN

Stack Overflow用户

发布于 2022-04-22 15:00:00

我不知道这是否符合你的逻辑:

代码语言:javascript
复制
SELECT 
  DEL.BABY_ID, 
  DEL.MOTHER_ID, 
  MIN(DEL.CHECK_VISIT_DATE),
  DEL.BABY_BIRTH_DATE
FROM FT_DEL_SUMMARY AS DEL
group by 
  DEL.BABY_ID, 
  DEL.MOTHER_ID, 
  DEL.BABY_BIRTH_DATE
having -- number of distinct yyyymm equal to number of months between first and last vist
   count(distinct td_month_of_calendar(DEL.CHECK_VISIT_DATE))
   = max(td_month_of_calendar(DEL.CHECK_VISIT_DATE)) -
     min(td_month_of_calendar(DEL.CHECK_VISIT_DATE)) +1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71929535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档