Advertisement
Guest User

monster query

a guest
Sep 7th, 2012
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 5.32 KB | None | 0 0
  1. with ctebiggie  as (    select
  2.    distinct  p.[IMS_PRESCRIBER_ID],
  3.    p.PHYSICIAN_NPI as MLISNPI,
  4.    a.CLIENT_ID,
  5.    p.MLIS_FIRSTNAME,
  6.    p.MLIS_LASTNAME,
  7.    p_address.IMS_DEA_NBR,
  8.    p.IMS_PROFESSIONAL_ID_NBR,
  9.    p.IMS_PROFESSIONAL_ID_NBR_src,
  10.    p.IMS_CERTIFICATION_CODE,
  11.    datepart(mm,
  12.    a.RECEIVED_DATE) as [Month],
  13.    datepart(yyyy,
  14.    a.RECEIVED_DATE) as [Year]    
  15. from
  16.    MILLENNIUM_DW_dev..D_PHYSICIAN p  
  17. left outer join
  18.    MILLENNIUM_DW_dev..F_ACCESSION_DAILY a  
  19.       on a.REQUESTOR_NPI=p.PHYSICIAN_NPI  
  20. left outer join
  21.    MILLENNIUM_DW_dev..D_PHYSICIAN_ADDRESS p_address  
  22.       on p.PHYSICIAN_NPI=p_address.PHYSICIAN_NPI    
  23. where
  24.    a.RECEIVED_DATE is not null  --
  25.    and p.IMS_PRESCRIBER_ID is not null  --
  26.    and p_address.IMS_DEA_NBR !='UNKNOWN'  
  27.    and p.REC_ACTIVE_FLG=1  
  28.    and p_address.REC_ACTIVE_FLG=1  
  29.    and DATEPART(yyyy,received_date)=2012    
  30.    and DATEPART(mm,received_date)=7            
  31. group by
  32.    p.[IMS_PRESCRIBER_ID],
  33.    p.PHYSICIAN_NPI,
  34.    p.IMS_PROFESSIONAL_ID_NBR,
  35.    p.MLIS_FIRSTNAME,
  36.    p.MLIS_LASTNAME,
  37.    p_address.IMS_DEA_NBR,
  38.    p.IMS_PROFESSIONAL_ID_NBR,
  39.    p.IMS_PROFESSIONAL_ID_NBR_src,
  40.    p.IMS_CERTIFICATION_CODE,
  41.    datepart(mm,
  42.    a.RECEIVED_DATE),
  43.    datepart(yyyy,
  44.    a.RECEIVED_DATE),
  45.    a.CLIENT_ID    )  ,  ctecount as   (select
  46.    COUNT (Distinct f.ACCESSION_ID) [count],
  47.    f.REQUESTOR_NPI,
  48.    f.CLIENT_ID,
  49.    datepart(mm,
  50.    f.RECEIVED_DATE) mm,
  51.    datepart(yyyy,
  52.    f.RECEIVED_DATE)yyyy  
  53. from
  54.    MILLENNIUM_DW_dev..F_ACCESSION_DAILY f    
  55. where
  56.    f.CLIENT_ID not in (select
  57.       *
  58.    from
  59.       SalesDWH..TestPractices)      
  60.    and DATEPART(yyyy,f.received_date)=2012    
  61.    and DATEPART(mm,f.received_date)=7      
  62. group by
  63.    f.REQUESTOR_NPI,
  64.    f.CLIENT_ID,
  65.    datepart(mm,
  66.    f.RECEIVED_DATE),
  67.    datepart(yyyy,
  68.    f.RECEIVED_DATE)  )    ,
  69.    ctemain   (IMS_PRESCRIBER_ID   ,
  70.    MLISNPI  ,
  71.    CLIENT_ID1  ,
  72.    MLIS_FIRSTNAME   ,
  73.    MLIS_LASTNAME   ,
  74.    IMS_DEA_NBR   ,
  75.    IMS_PROFESSIONAL_ID_NBR   ,
  76.    IMS_PROFESSIONAL_ID_NBR_src   ,
  77.    IMS_CERTIFICATION_CODE   ,
  78.    [Month]   ,
  79.    [Year]   ,
  80.    [count]   ,
  81.    REQUESTOR_NPI   ,
  82.    CLIENT_ID2   ,
  83.    mm   ,
  84.    yyyy  ) as (  select
  85.       ctebiggie.*,
  86.       c.*
  87.    from
  88.       ctebiggie  full
  89.    outer join
  90.       ctecount c  
  91.          on c.REQUESTOR_NPI=ctebiggie.MLISNPI  
  92.          and c.mm=ctebiggie.[Month]  
  93.          and c.yyyy=ctebiggie.[Year]  
  94.          and c.CLIENT_ID=ctebiggie.CLIENT_ID  )      SELECT
  95.          IMS_PRESCRIBER_ID   ,
  96.          MLISNPI  ,
  97.          CLIENT_ID1  ,
  98.          MLIS_FIRSTNAME   ,
  99.          MLIS_LASTNAME   ,
  100.          IMS_DEA_NBR   ,
  101.          IMS_PROFESSIONAL_ID_NBR   ,
  102.          IMS_PROFESSIONAL_ID_NBR_src   ,
  103.          IMS_CERTIFICATION_CODE   ,
  104.          [Month]   ,
  105.          [Year]   ,
  106.          [count]   ,
  107.          REQUESTOR_NPI   ,
  108.          CLIENT_ID2   ,
  109.          mm   ,
  110.          yyyy    
  111.    FROM
  112.       (           SELECT
  113.          IMS_PRESCRIBER_ID   ,
  114.          MLISNPI  ,
  115.          CLIENT_ID1  ,
  116.          MLIS_FIRSTNAME   ,
  117.          MLIS_LASTNAME   ,
  118.          IMS_DEA_NBR   ,
  119.          IMS_PROFESSIONAL_ID_NBR   ,
  120.          IMS_PROFESSIONAL_ID_NBR_src   ,
  121.          IMS_CERTIFICATION_CODE   ,
  122.          [Month]   ,
  123.          [Year]   ,
  124.          [count]   ,
  125.          REQUESTOR_NPI   ,
  126.          CLIENT_ID2   ,
  127.          mm   ,
  128.          yyyy                 ,
  129.          ROW_NUMBER() OVER (PARTITION
  130.       BY
  131.          IMS_PRESCRIBER_ID   ,
  132.          MLISNPI  ,
  133.          CLIENT_ID1  ,
  134.          MLIS_FIRSTNAME   ,
  135.          MLIS_LASTNAME   ,
  136.          IMS_DEA_NBR   ,
  137.          IMS_PROFESSIONAL_ID_NBR   ,
  138.          IMS_PROFESSIONAL_ID_NBR_src   ,
  139.          IMS_CERTIFICATION_CODE   ,
  140.          [Month]   ,
  141.          [Year]   ,
  142.          [count]   ,
  143.          REQUESTOR_NPI   ,
  144.          CLIENT_ID2   ,
  145.          mm   ,
  146.          yyyy                                      
  147.       ORDER BY
  148.          CASE
  149.             WHEN IMS_DEA_NBR = 'Unkown' THEN 0
  150.             ELSE 1
  151.          END,
  152.          IMS_DEA_NBR) AS RowNumberInGroup                  COUNT() OVER (PARTITION
  153.       BY
  154.          IMS_PRESCRIBER_ID   ,
  155.          MLISNPI  ,
  156.          CLIENT_ID1  ,
  157.          MLIS_FIRSTNAME   ,
  158.          MLIS_LASTNAME      ,
  159.          IMS_PROFESSIONAL_ID_NBR   ,
  160.          IMS_PROFESSIONAL_ID_NBR_src   ,
  161.          IMS_CERTIFICATION_CODE   ,
  162.          [Month]   ,
  163.          [Year]   ,
  164.          [count]   ,
  165.          REQUESTOR_NPI   ,
  166.          CLIENT_ID2   ,
  167.          mm   ,
  168.          yyyy)                      AS CountPerGroup,
  169.          SUM(CASE
  170.             WHEN deaID = 'Unkown' THEN 1
  171.             ELSE 0
  172.          END)                        OVER (PARTITION
  173.       BY
  174.          IMS_PRESCRIBER_ID   ,
  175.          MLISNPI  ,
  176.          CLIENT_ID1  ,
  177.          MLIS_FIRSTNAME   ,
  178.          MLIS_LASTNAME      ,
  179.          IMS_PROFESSIONAL_ID_NBR   ,
  180.          IMS_PROFESSIONAL_ID_NBR_src   ,
  181.          IMS_CERTIFICATION_CODE   ,
  182.          [Month]   ,
  183.          [Year]   ,
  184.          [count]   ,
  185.          REQUESTOR_NPI   ,
  186.          CLIENT_ID2   ,
  187.          mm   ,
  188.          yyyy)                       AS UnknownCountPerGroup            
  189.       FROM
  190.          ctemain        ) T  
  191.    WHERE
  192.       (
  193.          T.CountPerGroup = T.UnknownCountPerGroup
  194.          AND T.RowNumberInGroup = 1
  195.       )
  196.       OR T.RowNumberInGroup > T.UnknownCountPerGroup
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement