2014-06-12 37 views
-1

我在SQL一個簡單的任務按月根據ID來概括值:SQL SUM GROUP BY其中id隨時間變化

SELECT ID,SUM(Monthly_value) FROM MY_DATABASE GROUP BY ID

然而,我的數據收集了好幾年,與此同時,一些ID值發生了變化,幾個ID開發了相應的新業務,並且存在兩個ID下,在這些有限的情況下,我需要將它們合計爲一個。

我也收到與需要被視爲一個對ID的列表不斷擴充:

  • 老相應的新的ID,我要求總結(Monthly_value)這些新老ID的
  • 兩個ID被視爲一個。

有沒有一種簡單的方法來修改這個代碼,這樣我就不會在原始數據庫編輯老的ID,並在某些情況下,我可以通過一個ID值求和幾個ID的,而大多數情況下,我會總結,組。

我不應該用新的ID物理替換舊的,因爲其他查詢仍然可以使用它。我可以使用另一個表格,即一個ID可能具有相應另一個ID的字典,這兩者都需要總結。我不知道在哪個方向走,也許

====在這裏,我想,但不知道如何有意義。======

SELECT ID, sum(Monthly_value), 
FROM my_database LEFT JOIN my_double_id_cases ON my.database.ID=my_double_id_cases.ID; 
GROUP By 
Case 
NOT NULL my_double_id_cases.SecondaryID 
(I do not know what to do to get two ID's to be aggregated, no idea whatsoever) 
Else 
ID 

....

的數據是很簡單的,我從我的questiton移除的時間問題:

Id, date, value 
112233,21-10-2012,23 231 
232123,20-11-2012,11 234 
112233,11-12-2012,21 211 
112233,12-12-2013,14 110 
887755,12-12-2013,14 110 

....(大量的記錄,數年)...

突然在2013年中期我被告知,現在112233將是001122(也是名稱已經改變,實際上沒有辦法聚合,但外部列表中,相應的ID與新ID的字典

預期的結果將是。

ID; Sum (eg. for year 2014) 
001122; 10 021 213 (includes also 112233 values, ID changed mid 2014) 
232123; 8 323 111 (includes also 887755 values, two IDs are in fact one entity) 

other ID's, the majority of them are summed up like in the initial query (group by ID) 

而在一天結束時232123和887755也應該總結在一起。 其他ID如果不在我的「詞典」中,則照常進行求和。

======= =======平臺,我使用ACE SQL

,(實際上是,如果我沒有錯,MS接入)。我的代碼位於VBA宏中,我的表格位於Excel文件中。

======================

我會非常感謝你的幫助。

+1

請編輯您的問題,並提供樣本數據和期望的結果。另外,你使用的是SQL Server還是MS Access?它們具有不同的功能和語法。 –

+0

很抱歉,我根據您的要求添加了更多信息。 –

回答

0

,如果你有新老ID的列表的表:

SELECT isnull(n.newid,myd.ID) ID, sum(myd.Monthly_value) FROM my_database myd left join newoldids n on n.oldid = myd.id 
GROUP By isnull(n.newid,myd.ID) 
+0

親愛的保羅我明白我的字典必須將舊的和新的價值都翻譯成newID,它提供了合理而有效的解決方案,但是我怎樣才能解決Id問題。不是在我的dictipnary prezent? 謝謝你這個好主意。 –

+0

請參閱我的編輯並根據您的結構對其進行檢查。使用左連接可以獲得所有行,而不僅僅是具有更改的行。還要檢查性能問題。 – Paolo

+0

謝謝。我現在在我的手機將測試它,並得到我的信譽太低,加上你你很棒 –

-1

這可能是最容易使用的一個新的表,其中應當分組的所有ID是一排不同的屬性;這將消除任何瘋狂操作的需要,因爲您可以將新ID代入所有其他ID。

+0

我想一個動態構建新列的新類型的id(concatenated ???)用於在我的字典表中找到的聚合IF標識(變化表)如果找不到使用的舊標識izy 感謝您的幫助 –