> | masa |
> | 01122005 |
> bagaiamana querynya agar datanya jadi seperti ini
> | bulan |tahun
> | 01 |2005
> | 02 |2005
> | 03 |2005
> | 04 |2005
> | 05 |2005
> | 06 |2005
> | 07 |2005
> | 08 |2005
> | 09 |2005
> | 10 |2005
> | 11 |2005
> | 12 |2005
Saya asumsikan masnya mengerti query di bawah ini:
SELECT
AWAL,
AKHIR,
AKHIR - AWAL + 1 JUMLAH_PERIODE,
AMOUNT,
TAHUN
FROM(
SELECT
TO_NUMBER(SUBSTR(MASA, 1, 2)) AWAL,
TO_NUMBER(SUBSTR(MASA, 3, 2)) AKHIR,
TO_NUMBER(SUBSTR(MASA, 5, 4)) TAHUN,
AMOUNT
FROM
TRANSAKSI
)
Query itu nanti menghasilkan record seperti ini:
Awal Akhir JUMLAH_PERIODE AMOUNT TAHUN
1 12 12 60000 2005
Nah triknya seperti ini.
Masnya define dulu satu table dummy, sebut saja table DUMMY, yang isinya
kira-kira seperti ini
DUMMY_ID
1
2
3
4
5
6
7
8
9
10
11
12
Lalu query di atas tadi itu dipakai lagi, dengan men-join dengan table dummy.
Sehingga query lengkapnya seperti ini:
SELECT
DUMMY_ID,
AMOUNT / JUMLAH_PERIODE AMOUNT_TIAP_PERIODE,
TAHUN
FROM(
SELECT
AWAL,
AKHIR,
AKHIR - AWAL + 1 JUMLAH_PERIODE,
AMOUNT,
TAHUN
FROM(
SELECT
TO_NUMBER(SUBSTR(MASA, 1, 2)) AWAL,
TO_NUMBER(SUBSTR(MASA, 3, 2)) AKHIR,
TO_NUMBER(SUBSTR(MASA, 5, 4)) TAHUN,
AMOUNT
FROM
TRANSAKSI
)
) TRANSAKSI,
DUMMY
WHERE
DUMMY_ID BETWEEN AWAL AND AKHIR
Dan akan diperoleh record(s) seperti ini :
1 5000 2005
2 5000 2005
3 5000 2005
4 5000 2005
5 5000 2005
6 5000 2005
7 5000 2005
8 5000 2005
9 5000 2005
10 5000 2005
11 5000 2005
12 5000 2005
Kolom pertama adalah bulan (1 berarti Januari, 12 berati Desember)
Kolom kedua adalah value pada bulan itu dan
Kolom ketiga adalah tahun
Saya mengasumsikan beberapa hal, antara lain:
1. Format tanggal pada "masa" adalah 2 karakter awal adalah bulan awal, 2
karakter berikutnya adalah bulan akhir dan 4 karakter sisa adalah tahun
2. Bulan awal dan bulan akhir berada di tahun yang sama
Semoga membantu