0

初めて店舗を訪れた顧客 [Patient_ID として別名] の月別 (および年別) の内訳を特定する必要があります。来店日時は、テーブルの[MDT Review Date]列に格納されます。

顧客は年間を通じて複数回来店し、合計数を増やすことができます->しかし、私が必要とするのは、顧客が最初に訪れたときだけです.

たとえば、Tom Bombadil が 2019 年 1 月に 1 回来店したため、カウントが 1 に増加し、3 月には 4 回になりました。したがって、カウントは 3 月に 1、2 月に 0、1 月に 1、そして 10 月に 4 回となるはずです。その後、12 月に 2 回。Tom Bombadil を特定の月に 1 回だけ
カウントする必要があります。彼の最初の出現は 1 か月あたりでした。出力は次のようになります。

rn1 YEAR    Month_Number    Month       Total_Count
1   2010    6               June        2
1   2010    7               July        1
1   2010    8               August      5
1   2010    10              October     5
1   2010    11              November    3
1   2011    1               January     4
1   2011    2               February    6
1   2011    4               April       7
1   2011    5               May         4
1   2011    6               June        10
1   2011    7               July        10
1   2011    8               August      14
1   2011    9               September   4
1   2011    10              October     8
1   2011    11              November    11
1   2011    12              December    11
1   2012    1               January     8
1   2012    2               February    21​

私の質問を参照してください。私が持っているのは、ウィンドウ機能を使用して、COUNT月ごとの来店数をカウントしようとしています。次に、ROW_NUMBER関数は各訪問に一意の番号を割り当てようとします。私は何を間違っていますか?

select 
        *
    from
        (select distinct 
             row_number() over (partition by p.Patient_ID, p.PAT_Forename1, p.PAT_Surname
                                order by PAT_Forename1, p.Patient_ID, PAT_Surname) AS rn1,
             datepart(year, [DATE_COLUMN]) as YEAR,
             datepart(month, [DATE_COLUMN]) as Month_Number,
             datename(month,[DATE_COLUMN]) as Month,
             count(p.Patient_ID) over (partition by datepart(year,[DATE_COLUMN]),
             datename(month, [DATE_COLUMN])) as Total_Count
         from 
             Tablename m
         inner join 
            TableName p on m.PK_ID = p.PK_ID
        
         ) as temp
    where 
        rn1 = 1​
4

0 に答える 0