2012-11-24 47 views
0

查詢1:如何簡化查詢?

SET @count = 0; 
    UPDATE a_daily_copy_copy 
    SET a_daily_copy_copy.Cummulative_Target = @count:= target + @count 
    where a_daily_copy_copy.Site_id = 1 
      and a_daily_copy_copy.Year=4 
      and a_daily_copy_copy.Billing_cycle=1 
    ORDER BY date 

查詢2:修改a_daily_copy_copy.Billing_cycle = 2

SET @count = 0; 
    UPDATE a_daily_copy_copy 
    SET a_daily_copy_copy.Cummulative_Target = @count:= target + @count 
    where a_daily_copy_copy.Site_id = 1 
      and a_daily_copy_copy.Year=4 
      and a_daily_copy_copy.Billing_cycle=2 
    ORDER BY date 

我是初學者和截至目前我通過編輯手動運行每次查詢查詢1,我知道這兩個查詢可以合併成一個查詢。

我試着用功能組解決問題,但不能想出請幫助我。

已篩查表: enter image description here

+0

你可以添加樣本記錄與預期的結果嗎? –

+0

已添加表格的屏幕截圖! –

+1

是從業務點視圖修復的這些子集(即,是否遲早會需要以不同方式計算累計計數?)如果是這樣,我將擺脫累計計數列,並簡單地查詢記錄計數某個年份/結算週期/網站ID(添加/減去任何其他限制),其日期少於或等於特定日期。如果累積總是按照這組標準進行分組,那麼您的查詢看起來很好,並且沒有什麼需要更改以改進它。 – Isaac

回答

2

看來,我認爲你可以這樣做:

SET @count = 0; 
    UPDATE a_daily_copy_copy 
    SET a_daily_copy_copy.Cummulative_Target = @count:= target + @count where a_daily_copy_copy.Site_id = 1 and a_daily_copy_copy.Year=4 and a_daily_copy_copy.Billing_cycle IN (1, 2) 
    ORDER BY date 

...除非我已經錯過了超過結算週期其他兩個查詢之間的區別。

+0

爲我工作!有點好奇知道任何其他不同的方式來獲得! –