# Query Split Data

• ### Pertanyaan

• Saya mempunya tabel pegawai, ketika saya jalankan query :

```select  count(*) as jml_pegawai,
usia =
case
when (year(getdate())- year(tgl_lahir)) <= 25 then ' < 25'
when( year(getdate())- year(tgl_lahir)) >= 26 and ( year(getdate())- year(tgl_lahir)) <= 30 then '26 s/d 30'
when( year(getdate())- year(tgl_lahir)) >= 31 and ( year(getdate())- year(tgl_lahir)) <= 35 then '31 s/d 35'
when( year(getdate())- year(tgl_lahir)) >= 36 and ( year(getdate())- year(tgl_lahir)) <= 40 then '36 s/d 40'
when( year(getdate())- year(tgl_lahir)) >= 41 and ( year(getdate())- year(tgl_lahir)) <= 45 then '41 s/d 45'
when( year(getdate())- year(tgl_lahir)) >= 46 and ( year(getdate())- year(tgl_lahir)) <= 50 then '46 s/d 50'
when( year(getdate())- year(tgl_lahir)) >= 51  then '> 51'
end

from pegawai p

where year(tgl_lahir) is not null

group by  case
when (year(getdate())- year(tgl_lahir)) <= 25 then ' < 25'
when( year(getdate())- year(tgl_lahir)) >= 26 and ( year(getdate())- year(tgl_lahir)) <= 30 then '26 s/d 30'
when( year(getdate())- year(tgl_lahir)) >= 31 and ( year(getdate())- year(tgl_lahir)) <= 35 then '31 s/d 35'
when( year(getdate())- year(tgl_lahir)) >= 36 and ( year(getdate())- year(tgl_lahir)) <= 40 then '36 s/d 40'
when( year(getdate())- year(tgl_lahir)) >= 41 and ( year(getdate())- year(tgl_lahir)) <= 45 then '41 s/d 45'
when( year(getdate())- year(tgl_lahir)) >= 46 and ( year(getdate())- year(tgl_lahir)) <= 50 then '46 s/d 50'
when( year(getdate())- year(tgl_lahir)) >= 51  then '> 51'
end```

| jml_pegawai | usia |

4 < 25
2 > 51
87 26 s/d 30
85 31 s/d 35
22 36 s/d 40
5 41 s/d 45
6 46 s/d 50

saya ingin memecah hasil query data tersebut menjadi

| JML_PRIA | JML_WANITA |USIA |

..........   .............  ............

..........   .............  ............

mohon arahan dari para master,

Terima kasih

• Diedit oleh Minggu, 03 Maret 2013 11.04 salah
Minggu, 03 Maret 2013 11.02

### Jawaban

• Anda bisa gunakan PIVOT untuk mendapatkan hasil seperti yang dimaksud.

Misal di tabel pegawai ada kolom Kelamin dan tgl_lahir. Yang mana kolom Kelamin berisi nilai 'Male' dan 'Female'. Anda bisa gunakan contoh query berikut.

```SELECT [Male], [Female], [Umur] FROM
(
SELECT
Kelamin,
Umur =
CASE
WHEN (datepart(year, getdate()-TglLahir)-1900) <= 25 THEN '< 25'
WHEN (datepart(year, getdate()-TglLahir)-1900 >= 26) AND (datepart(year, getdate()-TglLahir)-1900 <= 30) THEN '26 s/d 30'
WHEN (datepart(year, getdate()-tgl_lahir)-1900 >= 31) AND (datepart(year, getdate()-tgl_lahir)-1900 <= 35) THEN '31 s/d 35'
WHEN (datepart(year, getdate()-tgl_lahir)-1900 >= 36) AND (datepart(year, getdate()-tgl_lahir)-1900 <= 40) THEN '36 s/d 40'
WHEN (datepart(year, getdate()-tgl_lahir)-1900 >= 41) AND (datepart(year, getdate()-tgl_lahir)-1900 <= 45) THEN '41 s/d 45'
WHEN (datepart(year, getdate()-tgl_lahir)-1900 >= 46) AND (datepart(year, getdate()-tgl_lahir)-1900 <= 50) THEN '45 s/d 50'
ELSE '> 51'
END
FROM pegawai
) up
PIVOT (COUNT(Kelamin) FOR Kelamin IN ([Male], [Female])) AS pvt
```
Saya sedikit memperbaiki perhitungan umur dengan memperhitungkan tanggal lahir. Jadi yang lahir pada 1 Maret 1980 saat ini berumur 33 sedangkan yang lahir pada tanggal 20 Maret baru berumur 32 tahun.