none
請問SQL 累積總計 RRS feed

  • 問題

  •  

    我在SQL創了二個資料表如下

     

    TableA                                                       TableB

    ---------------------------                -----------------------------------

    Name               Sales                    Name               date

    J1             10                J1         20070101 

    J2             15                J2         20070102

    J3             20                J3         20070103

    J4             40                J4         20070104

    J5             50                J5         20070105

    J6             20                J6         20070106

     

    如果要算TableA表的累計,我下的select如下:

    SELECT a1.Name, a1.sales ,SUM(a2.sales) Running_total

    FROM TableA a1, TableB a2

    WHERE a1.Sales <= a2.sales or (a1.sales = a2.sales and a1.Name = a2.Name)

    GROUP BY a1.Name, a1.Sales

     

     

    結果會變這樣

     --------------------------------------------     

    Name       Sales     Running_total     

    J1              10             10                    

    J2              15             25                   

    J3              20             45                   

    J4              40             85                    

    J5              50           135                   

    J6              20           155                    

     

    但我想要結合TableB 再多加一欄date...

    如下這樣:

     ----------------------------------------------------------------      

    Name       Sales     Running_total            date

    J1              10             10                     20070101 

    J2              15             25                     20070102

    J3              20             45                     20070103

    J4              40             85                     20070104

    J5              50           135                     20070105

    J6              20           155                     20070106

     

     

    我的Select要怎改呢?.

    謝謝!

     

     

    *不好意思.因為先前用貼的.所以格式有點亂,我已經整理好了.可以解除鎖定了嗎?

    2007年3月29日 上午 07:38

解答

  • 如果你不堅持以 SQL 指令取出逐行累計值的話, 在 .NET 中不知有多少可以取代的做法。光是簡單的使用 DataReader 迴圈就可以輕鬆的做出來。使用 (Web) GridView 控制項,從 RowCreate() 事件中也可以做出來;或寫個簡單的函數,套在 TemplateField 裡面的 Eval() 外面也可以做出來。

     

    2007年11月28日 下午 04:20

所有回覆

  • TableB 又沒有 sales 欄位,你是不是沒有貼完整阿?

    2007年11月25日 上午 02:30
  • 如果你不堅持以 SQL 指令取出逐行累計值的話, 在 .NET 中不知有多少可以取代的做法。光是簡單的使用 DataReader 迴圈就可以輕鬆的做出來。使用 (Web) GridView 控制項,從 RowCreate() 事件中也可以做出來;或寫個簡單的函數,套在 TemplateField 裡面的 Eval() 外面也可以做出來。

     

    2007年11月28日 下午 04:20
  • 單純來看,邏輯似乎就有問題~

    SELECT a1.Name, a1.sales ,SUM(a2.sales) Running_total

    FROM TableA a1, TableB a2

    WHERE a1.Sales <= a2.sales or (a1.sales = a2.sales and a1.Name = a2.Name)

    GROUP BY a1.Name, a1.Sales

     

    TableA                                                       TableB

    ---------------------------                -----------------------------------

    Name               Sales                    Name               date

    J1             10                J1         20070101 

    J2             15                J2         20070102

    J3             20                J3         20070103

    J4             40                J4         20070104

    J5             50                J5         20070105

    J6             20                J6         20070106

     

    這裡沒有列出來TableB的sales....但是這是SUM的欄位,基本上,你是將TableB的欄位加總,那表示,你A對B應該至少是一對多的關係,這樣一個TableA的J1對應到TableB是多個,那date也是多筆,你要選擇顯示那一個呢?或是說法有錯?請再詳細說明一下....

    2007年12月5日 上午 06:32