Penggunaan UNPIVOT dalam SQL SERVER
Seperti yang dijanjikan ini adalah cara saya untuk menyelesaikan masalah ini.
Create table
CREATE TABLE dbo.JUALAN_EJEN
EJEN varchar(10),
TARIKH date,
JUALAN DECIMAL(10,2),
UNTUNG DECIMAL(10,2)
)
;
Masukkan data
INSERT INTO dbo.JUALAN_EJEN(EJEN, TARIKH, JUALAN, UNTUNG) VALUES ('10001', '2022-01-30', 1000, 500)
INSERT INTO dbo.JUALAN_EJEN(EJEN, TARIKH, JUALAN, UNTUNG) VALUES ('10002', '2022-02-02', 2000, 100);
INSERT INTO dbo.JUALAN_EJEN(EJEN, TARIKH, JUALAN, UNTUNG) VALUES ('10003', '2022-01-01', 5000, 3000);
INSERT INTO dbo.JUALAN_EJEN(EJEN, TARIKH, JUALAN, UNTUNG) VALUES ('10001', '2022-04-05', 700, 200);
INSERT INTO dbo.JUALAN_EJEN(EJEN, TARIKH, JUALAN, UNTUNG) VALUES ('10002', '2022-03-07', 8000, 4000);
INSERT INTO dbo.JUALAN_EJEN(EJEN, TARIKH, JUALAN, UNTUNG) VALUES ('10003', '2022-03-08', 1000, 500);
INSERT INTO dbo.JUALAN_EJEN(EJEN, TARIKH, JUALAN, UNTUNG) VALUES ('10001', '2022-08-07', 8900, 3300);;
Lihat table dbo.JUALAN_EJEN
select * from dbo.JUALAN_EJEN;
Sekarang kita jumlahkan keuntungan dan jualan
select EJEN
[JUMLAH_JUALAN] = SUM(JUALAN),
[JUMLAH_UNTUNG] = SUM(UNTUNG)
FROM dbo.JUALAN_EJEN
GROUP BY EJEN;,
Hasilnya
Sekarang bahagian yang penting
select [EJEN], [JENIS_JUMLAH], [JUMLAH]
FROM
(
select EJEN,
[JUMLAH_JUALAN] = SUM(JUALAN),
[JUMLAH_UNTUNG] = SUM(UNTUNG)
FROM dbo.JUALAN_EJEN
GROUP BY EJEN
) P
UNPIVOT (
[JUMLAH] FOR [JENIS_JUMLAH] IN ([JUMLAH_JUALAN], [JUMLAH_UNTUNG])
) AS UNPVT]
Hasilnya
Penjelasan SQL
Baris 5-7: Adalah asas kepada data yang hendak dianalysis
Baris 12-14: Bahagian yang UNPIVOT data daripada column kepada row. Dalam baris 13, [JUMLAH] digunakan untuk merakam nilai(value) seperti 10600 atau 4000. [JENIS_JUMLAH] pula merakam nama column yang digunakan untuk merakam nilai. Kita boleh menggunakan IN untuk memilih untuk memasukkan atau mengeluar column yang tidak perlu.
Saya berharap ini dapat membantu anda. Terima kasih.