Lumayan, hasil diskusi & sharing jadi nambah ilmu. Dulu kirain di SQL Server tuh gbsa, ternyata bisa. Intinya sih melakukan Fibonacci dan dilakukan per grup. Berguna banget ketika pengen alokasi 1 nilai ke beberapa row.
Kurang lebih simulasi nya begini :
ID |
GROUP_TYPE |
VAL |
1 |
GROUP_1 |
1 |
2 |
GROUP_1 |
4 |
3 |
GROUP_1 |
3 |
4 |
GROUP_2 |
4 |
5 |
GROUP_2 |
5 |
Dari data diatas, pengen dijadiin seperti ini :
ID |
GROUP_TYPE |
VAL |
SUM_VALUE |
1 |
GROUP_1 |
1 |
1 |
2 |
GROUP_1 |
4 |
5 |
3 |
GROUP_1 |
3 |
8 |
4 |
GROUP_2 |
4 |
4 |
5 |
GROUP_2 |
5 |
9 |
Dari referensi disini, akhirnya coba pake SQL Server 2005 dan berhasil menggunakan query dibawah :
IF OBJECT_ID('tempdb.dbo.#temp') IS NOT NULL DROP TABLE #temp CREATE TABLE #TEMP ( ID INT IDENTITY , GROUP_TYPE VARCHAR(10) , VAL INT ) INSERT INTO #TEMP (GROUP_TYPE, VAL) VALUES ('GROUP_1', 1) INSERT INTO #TEMP (GROUP_TYPE, VAL) VALUES ('GROUP_1', 4) INSERT INTO #TEMP (GROUP_TYPE, VAL) VALUES ('GROUP_1', 3) INSERT INTO #TEMP (GROUP_TYPE, VAL) VALUES ('GROUP_2', 4) INSERT INTO #TEMP (GROUP_TYPE, VAL) VALUES ('GROUP_2', 5) SELECT a.ID , GROUP_TYPE , a.VAL , ( SELECT SUM (b.VAL) FROM #TEMP b WHERE b.ID <= a.ID AND A.GROUP_TYPE = B.GROUP_TYPE ) SUM_VALUE FROM #TEMP a ORDER BY a.ID; |
CMIIW .
Marifnst, 2014-08-21
Leave a Reply