Fibonacci (SQL SERVER)

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

Your email address will not be published. Required fields are marked *

Afiseaza emoticoanele Locco.Ro