none
請教一個 最後到訪次數 的問題 RRS feed

  • 問題


  • 各位前輩你們好

    小弟最近遇到一個問題, 想請教大家有沒有什麼好方法可以解決

    故事是這樣子的
    假設亞力山大有10間店(S001-S010), 凡會員都可以到任何一家店去健身
    為了記錄每位會員的到訪歷史, 我們會用以下表格來記錄


    CusNo StoreNo VisitDate
    ----- ------- ----------
    C001  S005    2008/09/09  <-會員C001在2008/09/09到S005
    C001  S005    2008/09/08
    C001  S003    2008/09/07
    C001  S004    2008/09/06
    C001  S001    2008/09/05
    C001  S005    2008/09/04
    C001  S005    2008/09/03
    C001  S005    2008/09/02
    C001  S005    2008/09/01

     

    C002  S003    2008/09/09
    C002  S003    2008/09/08
    C002  S003    2008/09/07
    C002  S003    2008/09/04
    C002  S003    2008/09/01

     

    C003  S001    2008/09/09
    C003  S006    2008/09/08
    C003  S006    2008/09/07
    C003  S006    2008/09/06
    C003  S006    2008/09/05
    C003  S001    2008/09/04

     

    問題是這樣子的
    如何求得每一位會員,最近一次是到那一家店,而且連續到了幾次
    如上面的例子,結果就是


    CusNo StoreNo VisitTimes
    ----- ------- ----------
    C001  S005    2
    C002  S003    5 
    C003  S001    1

     

    像這樣子的例子, 該如何查詢, 或者用什麼方法可以取得結果呢?

     

    資料庫:SQL2005
    2008年9月16日 下午 05:07

解答

所有回覆

  • 查線上手冊下面關鍵字用法。

     

    最後一次用 Top 1 反序排列

     

    各店幾次用 Group By

     

    2008年9月17日 上午 12:36
  •  

    Dear  心冷熱情熄

    感謝您的回覆, 因為Group By, 會統計到所有的紀錄

    這需求是, 要統計最後連續的次數
    如上例中, C001 最後是到 S005 , 要算最後連續來S005的次數

    也就是C001雖然總共來了S005六次, 但最後連續來是2次

     

     

    2008年9月17日 上午 02:34
  • 像這種情況都會另外使用 User function 來做。

     

     

    2008年9月17日 上午 02:39
    版主
  • Dear 小朱

    你的意思是用一個UserFunction來算每一個人的次數嗎

    目前我想到的Function內容會是

    查詢某一人的所有紀錄, loop判斷最後連續次回, 回傳出去

    就是那個連續次數, 目前想到的方法都只能跑loop

    關於Function內容, 不知您是否有其他方式

     

    2008年9月17日 上午 02:51
  • 先前沒注意到你要求連續...

     

    關聯式資料庫的基本架構就是每筆資料列 (row) 為獨立,連續本身是時間函數,跟資料庫本身沒直接關係,所以小朱會建議你用自訂函數做。

     

    如果是很重要的功能,我會建議再增加個統計表,新增消費紀錄時,同時更新統計表即可。

    2008年9月17日 上午 03:05