Jumat, 25 Juni 2021

Pivot - SQL Server

 Report asli:


Report yang diinginkan:


Caranya adalah sebagai berikut:

-------- 1 CREATE TABEL TEMPORARY DAN INSERT VALUES --------------
create table #temp1
(
 Date_Process datetime,
 Category varchar(3),
 Amount money
)
insert into #temp1 values ('1/1/2012', 'ABC', 1000.00)
insert into #temp1 values ('2/1/2012', 'DEF', 500.00)
insert into #temp1 values ('2/1/2012', 'GHI', 800.00)
insert into #temp1 values ('2/10/2012', 'DEF', 700.00)
insert into #temp1 values ('3/1/2012', 'ABC', 1100.00)

--- Cek tabel temporary
select * from #temp1


-------- 2 QUERY PIVOT NYA ---------
--- CARA 1 : Isi dari kolom category terbatas/statis atau sudah ditentukan
--- QUERY PIVOT---
select *
from 
(
  select convert(varchar,Date_Process, 23) Date_Process, Category, Amount
  from #temp1 
) src
pivot
(
  sum(Amount)
  for Category in ([ABC], [DEF], [GHI])
) piv;

--- CARA 2 : Isi dari kolom category tidak terbatas/dinamis. jadi akan muncul kolom sesuai dengan jumlah values/isi nya
--- DYNAMIC QUERY PIVOT---
DECLARE @var_category  AS NVARCHAR(MAX)='';
DECLARE @query AS NVARCHAR(MAX)='';

SELECT @var_category = @var_category + QUOTENAME(Category) + ',' FROM (select distinct Category from #temp1 ) as tmp
select @var_category = substring(@var_category, 0, len(@var_category)) 
set @query = 
'SELECT * from 
(
    select convert(varchar,Date_Process, 23) Date_Process, Amount, Category from #temp1
) src
pivot 
(
    sum(Amount) for Category in (' + @var_category + ')
) piv'

execute(@query)





Tidak ada komentar:

Posting Komentar

Dynamic Query - SQL Server

Berikut adalah contoh dari bentuk dari Dynamic Query di SQL Server yang dibungkus ke dalam Store Procedure:  USE [Data00] GO SET ANSI_NULLS ...

Popular Posts