我想運用將每一個值都設定為一的情況下,
將下一個值順序排號碼
在網上找到一個碼
SELECT a1.Name, a1.Sales, SUM(a2.Sales) Running_Total 
FROM Total_Sales a1, Total_Sales a2 
WHERE a1.Sales <= a2.sales or (a1.Sales=a2.Sales and a1.Name = a2.Name) 
GROUP BY a1.Name, a1.Sales 
ORDER BY a1.Sales DESC, a1.Name DESC;但我發現它在有重覆的情況會出現問題。
希望各位大大幫忙解決。

解决方案 »

  1.   

    如果是sql2005可以用 row_number2000你应该用子查询,不是where里面加
      

  2.   

    我正在處理資料,
    我的問題比較複雜,
    我需要按不同的運動項目分類所以
    row_number 不能夠實玩,
    加上它不是pk,好像不能用 
      

  3.   

    Apply_No Data_Year Apply_For Reg_No R_Apply Inornot Illegality Frim_Event
    1 2009 F-A-100M 20031036 Flase
    2 2009 F-A-100M 20031079 Flase
    3 2009 F-A-100M 20031115 Flase
    4 2009 F-A-100M 20041164 True TRUE Flase
    5 2009 F-A-100M 20051038 True FLASE
    6 2009 F-A-1500M 20061144 True TRUE Flase
    7 2009 F-A-1500M 20061183 True TRUE Flase
    8 2009 F-A-1500M 20071080 True FLASE
    9 2009 F-A-1500M 20081086 True TRUE Flase
    10 2009 F-A-200M 20041037 True TRUE Flase
    11 2009 F-A-200M 20041164 True TRUE Flase
    12 2009 F-A-200M 20051216 True FLASE
    13 2009 F-A-200M D20081010 True TRUE True
    14 2009 F-A-3000M 20071077 True TRUE Flase
    15 2009 F-A-3000M 20071090 Flase
    16 2009 F-A-3000M D20081011 Flase
    17 2009 F-A-400M 20061056 Flase
    18 2009 F-A-400M 20061089 Flase
    19 2009 F-A-400M 20081063 True TRUE Flase
    20 2009 F-A-800M 20041089 Flase
    21 2009 F-A-800M 20061125 True TRUE Flase
    22 2009 F-A-800M 20071086 True TRUE Flase
    23 2009 F-A-800M 20071154 True TRUE Flase
    24 2009 F-A-800M 20081037 True FLASE
    25 2009 F-C-100M 20061056 Flase
    26 2009 F-C-100M 20061086 Flase
    27 2009 F-C-100M 20061089 Flase
    28 2009 F-C-100M 20061181 Flase
    29 2009 F-C-100M 20061183 Flase
    30 2009 F-C-100M 20081041 True TRUE True
    31 2009 F-C-100M 20081079 Flase
    32 2009 F-C-100M 20081116 Flase
    33 2009 F-C-100M D20081008 Flase
    34 2009 F-C-100M D20081022 True TRUE True
    35 2009 F-C-1500M 20081003 Flase
    36 2009 F-C-1500M 20081077 Flase
    37 2009 F-C-1500M 20081079 Flase
    38 2009 F-C-1500M 20081083 True TRUE Flase
    39 2009 F-C-1500M 20081116 Flase
    40 2009 F-C-1500M D20081016 True TRUE Flase
    41 2009 F-C-1500M D20081022 True TRUE True
    42 2009 F-C-200M 20071086 Flase
    43 2009 F-C-200M 20071154 Flase
    44 2009 F-C-200M 20071172 Flase
    45 2009 F-C-200M 20081004 Flase
    46 2009 F-C-200M 20081041 True TRUE True
    47 2009 F-C-200M 20081079 Flase
    48 2009 F-C-200M 20081109 True FLASE
    49 2009 F-C-200M 20081121 True TRUE Flase
    50 2009 F-C-200M D20081008 Flase
    51 2009 F-C-200M D20081011 Flase
    52 2009 F-C-3000M 20061086 Flase
    53 2009 F-C-3000M 20071090 Flase
    54 2009 F-C-3000M 20081008 Flase
    55 2009 F-C-3000M 20081041 True TRUE True
    56 2009 F-C-3000M 20081065 True TRUE True
    57 2009 F-C-3000M 20081104 True FLASE
    58 2009 F-C-3000M D20081001 Flase
    59 2009 F-C-3000M D20081007 True TRUE Flase
    60 2009 F-C-3000M D20081010 True TRUE True
    61 2009 F-C-3000M D20081011 Flase
    62 2009 F-C-3000M D20081022 True TRUE True
    63 2009 F-C-400M 20061086 Flase
    64 2009 F-C-400M 20071090 Flase
    65 2009 F-C-400M 20081008 Flase
    66 2009 F-C-400M 20081065 True TRUE True
    67 2009 F-C-400M 20081104 True TRUE Flase
    68 2009 F-C-400M 20081121 True FLASE
    69 2009 F-C-400M D20081001 Flase
    70 2009 F-C-400M D20081007 True TRUE Flase
    71 2009 F-C-400M D20081010 True TRUE True
    72 2009 F-C-400M D20081011 Flase
    73 2009 F-C-400M D20081022 True TRUE True
    74 2009 F-C-800M 20061086 Flase
    75 2009 F-C-800M 20071090 Flase
    76 2009 F-C-800M 20081008 Flase
    77 2009 F-C-800M 20081065 True TRUE True
    78 2009 F-C-800M 20081104 True TRUE Flase
    79 2009 F-C-800M D20081001 Flase
    80 2009 F-C-800M D20081007 True FLASE
    81 2009 F-C-800M D20081010 True TRUE True
    82 2009 F-C-800M D20081011 Flase
    83 2009 F-C-800M D20081022 True TRUE True
    84 2009 M-A-100M 20041089 True TRUE Flase
    85 2009 M-A-1500M 20041197 Flase
    86 2009 M-A-1500M 20051216 Flase
    87 2009 M-A-1500M 20071086 Flase
    88 2009 M-A-200M 20041089 True TRUE Flase
    89 2009 M-A-200M 20041164 Flase
    90 2009 M-A-200M 20041197 Flase
    91 2009 M-A-200M 20041239 Flase
    92 2009 M-A-200M 20051121 True TRUE Flase
    93 2009 M-A-200M 20061144 Flase
    94 2009 M-A-200M 20061195 Flase
    95 2009 M-A-3000M 20041108 Flase
    96 2009 M-A-3000M 20041197 Flase
    97 2009 M-A-3000M 20051038 Flase
    98 2009 M-A-3000M 20061056 True TRUE Flase
    99 2009 M-A-400M 20031036 True TRUE Flase
    100 2009 M-A-400M 20041197 Flase
    101 2009 M-A-400M 20061125 Flase
    102 2009 M-A-400M 20061192 Flase
    103 2009 M-A-400M 20071090 True TRUE Flase
    104 2009 M-A-800M 20071086 Flase
      

  4.   

    排序结果的序号当然不能是pk了,不管怎么做都不应该是pk。row_number可以和partition by 配合分类
      

  5.   

    我需要按apply for 分類 不實玩累積總計
    frim_event 所有的確認項目均會以1表示
    ps:r_apply 是指他們的申請合要求
    in or not 是指他們的申請受到接受,
    Illegality flase 表示他們 沒有申請太多可以直接以電腦計出 編號
    true 是指他們申請太多會自己選擇那一些項目,並手動加入編號
      

  6.   

    抱歉...我自己中文水平並不高...請見諒
    我再說明
    apply for 是一個比賽項目的騙號,
    我希望按 apply for 作為分類,
    將不同的學生的申請接其申請號碼Apply_No順序,
    並輸出順序的號碼,
    即是同一個項目的學生會按申請號碼生成自己該項目的參賽編號。
      

  7.   

    select *,rn=row_number() over(partition by Apply_For order by  Apply_No ) from 表
      

  8.   

    抱歉......
    這個是不是一定要使用sql2005才能用的?
    如果是 又能不能夠與 access2007相容?
      

  9.   

    抱歉這兒是問aqlsever?
    跟access 完全不同?
    不過我還是想知道能不能夠相容,
    如果可以立即下載一個去處理問題。
      

  10.   

    下面语句仅在ACCESS中可用。
    select Apply_No, Data_Year, Apply_For, Reg_No, R_Apply, Inornot, Illegality, Frim_Event,
    iif(Illegality="Flase",dcount('*','application','Apply_For="'&Apply_For&'" and Illegality="Flase" and Apply_No<=' & Apply_No),null)
    from application