Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Cara Menulis Prosedur Tersimpan untuk Laporan SSRS Profesional

Dalam artikel ini, kita akan berbicara tentang laporan Layanan Pelaporan SQL Server profesional, cara membuat prosedur tersimpan untuk laporan ini guna memenuhi persyaratan bisnis, dan manfaat menggunakan prosedur tersimpan untuk menjalankan laporan SSRS.

Tentang Laporan SSRS Profesional

Mari kenali dulu laporan SSRS profesional.

Definisi Sederhana

Laporan SSRS profesional adalah laporan yang dibuat dengan mempertimbangkan praktik standar pengembangan laporan dan telah diuji secara menyeluruh agar mampu memenuhi persyaratan bisnis.

Dengan kata lain, laporan SSRS profesional dirancang, dikembangkan, diuji, dan disebarkan dengan sangat hati-hati ke lingkungan target untuk memastikan laporan tersebut memenuhi tujuan dan bermanfaat bagi bisnis.

Contoh

Contoh sederhana dari laporan SSRS profesional adalah laporan penjualan bulanan yang memberikan wawasan tentang seberapa baik kinerja bisnis dalam hal menjual layanan atau produknya.

Contoh lain dari laporan SSRS yang dikembangkan secara profesional adalah laporan yang menunjukkan transaksi bisnis harian dari perspektif bisnis.

Frekuensi laporan SSRS profesional

Frekuensi laporan menggambarkan seberapa sering laporan ini harus dijalankan untuk menunjukkan angka terbaru yang kemudian dapat dikirim ke departemen terkait di dalam perusahaan atau ke klien eksternal.

Frekuensi laporan SSRS profesional dapat berupa salah satu dari berikut ini:

Laporan Harian

Laporan harian, seperti namanya, harus dijalankan setiap hari agar dapat diakses atau dikirim ke pelanggan internal dan/atau eksternal.

Laporan Mingguan

Laporan yang menunjukkan angka mingguan dan dikirim ke penerima setiap minggu.

Laporan Bulanan

Laporan bulanan berisi data untuk seluruh bulan dan dimaksudkan untuk dikirimkan setiap bulan.

Laporan Tahunan

Laporan tahunan memberikan lebih banyak wawasan tentang data dengan menghitung angka tahunan untuk pelanggan dan pengguna akhir.

Laporan berdasarkan periode keuangan apa pun

Laporan yang mengikuti periode keuangan lainnya termasuk dalam kategori ini.

Tentang Frekuensi Laporan

Harap diingat bahwa laporan terpenting dalam hal frekuensi adalah laporan harian.

Faktanya, bukan hanya laporan – data yang Anda siapkan untuk laporan setiap hari juga penting.

Jika Anda sudah menyiapkan data untuk laporan harian, maka menyiapkan data untuk laporan mingguan sama dengan menjalankan laporan harian selama seminggu penuh. Laporan bulanan, pada gilirannya, sama dengan menjalankan laporan mingguan empat kali.

Namun, jika Anda hanya diminta untuk membuat laporan bulanan, maka menyiapkan data untuk laporan secara bulanan juga dapat diterima, dan dalam beberapa keadaan disarankan daripada menyiapkan data harian.

Detailnya berada di luar cakupan artikel ini, tetapi alasan saya menyebutkannya di sini adalah untuk menyoroti pentingnya mengembangkan laporan harian yang memang memerlukan penyiapan data untuk laporan setiap hari. Ini juga dapat menunjukkan cara menyiapkan data untuk laporan mingguan, bulanan, dan tahunan.

Peran Prosedur Tersimpan

Prosedur tersimpan memainkan peran penting dalam laporan SSRS profesional karena prosedur tersebut mendapatkan data yang diperlukan untuk laporan dari database.

Prosedur tersimpan memberikan banyak manfaat saat digunakan untuk tujuan pelaporan.

Logika Bisnis dan Prosedur Tersimpan

Prosedur tersimpan sangat disarankan untuk menerapkan logika bisnis pelaporan.

Kemudahan pengujian unit basis data

Prosedur tersimpan dapat dengan mudah diuji unit untuk memastikan bahwa prosedur tersebut memenuhi spesifikasi bisnis dan menerapkan logika bisnis untuk laporan SSRS.

Keamanan

Menggunakan prosedur tersimpan untuk menjalankan laporan memerlukan hak akses ke prosedur tersimpan yang diperlukan – ini dapat dikelola dengan pengguna atau peran basis data.

Manajemen akses untuk prosedur tersimpan yang ditulis untuk tujuan pelaporan ini membantu membangun solusi pelaporan yang aman di mana hanya pengguna tertentu yang dapat mengakses dan menjalankan laporan.

Pemeliharaan

Laporan SSRS berdasarkan prosedur tersimpan mudah dipelihara karena hanya perubahan dalam prosedur tersimpan yang diperlukan, tanpa perlu memodifikasi dan melacak skrip bentuk bebas untuk kumpulan data laporan.

Prasyarat

Artikel ini mengasumsikan bahwa pembaca sudah familiar dengan dasar-dasar skrip T-SQL dan pelaporan database.

Silakan baca artikel Pengembangan Laporan SSRS dengan Kata Sederhana untuk mendapatkan pemahaman cepat tentang cara membuat laporan SSRS sederhana.

Siapkan database sampel (ITSales)

Untuk memulai, mari buat database sampel bernama ITSales yang berisi angka penjualan TI:

-- Buat database sampel (ITSales)BUAT DATABASE ITSales;GOUSE ITSales;-- (1) Buat tabel penjualan bulanan di database sampelCREATE TABLE MonthlySale ( SaleId INT PRIMARY KEY IDENTITY (1, 1) ,TanggalJual DATETIME2 , Pelanggan VARCHAR(50), Produk VARCHAR(150), ,TotalPrice DECIMAL(10,2))GO-- (2) Mengisi tabel penjualan bulananSET IDENTITY_INSERT [dbo].[MonthlySale] ONINSERT INTO [dbo].[MonthlySale] ([ SaleId], [Tanggal Jual], [Pelanggan], [Produk], [TotalHarga]) NILAI (1, N'2019-05-01 00:00:00', N'Asif', N'Laptop Dell', CAST( 300.00 AS Desimal (10, 2)))INSERT INTO [dbo].[MonthlySale] ([SaleId], [SellingDate], [Pelanggan], [Produk], [TotalHarga]) NILAI (2, N'2019-05- 02 00:00:00', N'Mike', N'Dell Laptop', CAST(300.00 AS Desimal(10, 2)))INSERT INTO [dbo].[MonthlySale] ([SaleId], [SellingDate], [ Pelanggan], [Produk], [TotalHarga]) NILAI (3, N'2019-05-02 00:00:00', N'Adil', N'Lenovo Laptop', CAST(350,00 AS Desimal (10, 2) ))MASUKKAN KE [dbo].[Penjualan Bulanan] ([IdPenjualan], [Tanggal Jual], [Cu stomer], [Produk], [TotalHarga]) NILAI (4, N'2019-05-03 00:00:00', N'Sarah', N'HP Laptop', CAST(250.00 AS Desimal (10, 2) ))INSERT INTO [dbo].[MonthlySale] ([SaleId], [SellingDate], [Pelanggan], [Produk], [TotalHarga]) NILAI (5, N'2019-05-05 00:00:00', N'Asif', N'Dell Desktop', CAST(200.00 AS Desimal(10, 2)))INSERT INTO [dbo].[MonthlySale] ([SaleId], [Tanggal Jual], [Pelanggan], [Produk], [ TotalPrice]) NILAI (6, N'2019-05-10 00:00:00', N'Sam', N'HP Desktop', CAST(300.00 AS Desimal(10, 2)))INSERT INTO [dbo]. [Penjualan Bulanan] ([IdPenjualan], [Tanggal Jual], [Pelanggan], [Produk], [HargaTotal]) NILAI (7, N'2019-05-12 00:00:00', N'Mike', N'iPad ', CAST(250.00 AS Desimal(10, 2)))INSERT INTO [dbo].[MonthlySale] ([SaleId], [SellingDate], [Pelanggan], [Produk], [TotalHarga]) NILAI (8, N' 13-05-2019 00:00:00', N'Mike', N'iPad', CAST(250.00 AS Desimal(10, 2)))INSERT INTO [dbo].[MonthlySale] ([SaleId], [SellingDate ], [Pelanggan], [Produk], [TotalHarga]) NILAI (9, N'2019-05-20 00:00:00', N'Peter', N'Dell Laptop', CAST(350.00 AS Desimal(10, 2)))INSERT INTO [dbo].[MonthlySale] ([SaleId], [SellingDate], [Pelanggan], [Produk], [TotalHarga]) NILAI (10, N '2019-05-25 00:00:00', N'Peter', N'Asus Laptop', CAST(400.00 AS Desimal(10, 2)))INSERT INTO [dbo].[MonthlySale] ([SaleId], [Tanggal Jual], [Pelanggan], [Produk], [TotalHarga]) NILAI (11, N'2019-06-03 00:00:00', N'Sarah', N'iPad', CAST(300.00 AS Desimal( 10, 2)))INSERT INTO [dbo].[MonthlySale] ([SaleId], [SellingDate], [Pelanggan], [Produk], [TotalHarga]) NILAI (12, N'2019-06-05 00:00 :00', N'Sam', N'Dell Laptop', CAST(350.00 AS Desimal(10, 2)))INSERT INTO [dbo].[BulananSale] ([IdSale], [Tanggal Jual], [Pelanggan], [ Produk], [TotalPrice]) NILAI (13, N'2019-06-10 00:00:00', N'Akeel', N'Acer Laptop', CAST(300.00 AS Desimal(10, 2)))INSERT INTO [dbo].[Penjualan Bulanan] ([IdSale], [Tanggal Jual], [Pelanggan], [Produk], [HargaTotal]) NILAI (14, N'2019-06-12 00:00:00', N'Asif' , N'iPad', CAST(400.00 AS Desimal(10, 2)))INSERT INTO [dbo].[MonthlySale] ([Sal eId], [Tanggal Jual], [Pelanggan], [Produk], [TotalHarga]) NILAI (15, N'2019-06-14 00:00:00', N'Sarah', N'Lenovo Desktop', CAST( 400.00 AS Desimal (10, 2)))INSERT INTO [dbo].[MonthlySale] ([SaleId], [SellingDate], [Pelanggan], [Produk], [TotalHarga]) NILAI (16, N'2019-06- 15 00:00:00', N'Sahil', N'HP Desktop', CAST(500.00 AS Desimal(10, 2)))INSERT INTO [dbo].[Penjualan Bulanan] ([IdPenjualan], [Tanggal Jual], [ Pelanggan], [Produk], [TotalHarga]) NILAI (17, N'2019-06-20 00:00:00', N'Akeel', N'iPad', CAST(350,00 AS Desimal (10, 2)) )INSERT INTO [dbo].[MonthlySale] ([SaleId], [SellingDate], [Pelanggan], [Produk], [TotalHarga]) NILAI (18, N'2019-06-24 00:00:00', N 'Mike', N'Dell Desktop', CAST(300.00 AS Desimal(10, 2)))INSERT INTO [dbo].[MonthlySale] ([SaleId], [SellingDate], [Pelanggan], [Produk], [TotalHarga ]) NILAI (19, N'2019-06-25 00:00:00', N'Sahil', N'Lenovo Laptop', CAST(500.00 AS Desimal(10, 2)))INSERT INTO [dbo].[ Obral Bulanan] ([IdSale], [Tanggal Jual], [Pelanggan], [Produk], [HargaTotal]) NILAI S (20, N'2019-06-26 00:00:00', N'Peter', N'Acer Laptop', CAST(350.00 AS Desimal(10, 2)))SET IDENTITY_INSERT [dbo].[Penjualan Bulanan] NONAKTIF

Persyaratan, Analisis, dan Perencanaan

Sebelum Anda mulai mengerjakan proyek ini, mari kita lihat persyaratan bisnis yang diharapkan untuk laporan bulanan dan analisis awal kami.

Pernyataan

Persyaratan bisnis laporan bulanan mungkin datang kepada Anda dalam bentuk berikut:

“Sebagai pengguna bisnis, saya ingin melihat bulanan laporan penjualan”

Petunjuk

Silakan cari kata kunci dalam kebutuhan bisnis seperti bulanan , setiap hari atau mingguan untuk memahami frekuensi laporan yang dihasilkan.

Analisis Awal

Karena ini adalah laporan penjualan bulanan, maka ini memerlukan parameter yang akan diberikan pada waktu berjalan secara otomatis atau bergantung pada kode prosedur tersimpan untuk menghitung penjualan bulanan.

Laporan bulanan menunjukkan angka untuk satu bulan penuh – ini berarti laporan harus memperhatikan hal-hal berikut:

  1. Laporan harus menunjukkan angka dari bulan sebelumnya berdasarkan tanggal saat ini
  2. Laporan harus menghitung secara dinamis bulan sebelumnya pada tahun berjalan

Terakhir, kita harus memilih objek database yang paling sesuai. Dan prosedur tersimpan adalah opsi terbaik untuk menangani persyaratan pelaporan bisnis semacam ini.

Rencana Pengembangan

Rencana pengembangannya sederhana:

  1. Buat Stored Procedure untuk menampilkan angka penjualan bulanan
  2. Buat laporan SSRS untuk menampilkan angka penjualan bulanan berdasarkan prosedur tersimpan

Anda dapat mendekati ini dengan salah satu cara berikut:

  1. Prosedur tersimpan tanpa parameter, dan prosedur menghitung periode waktu bulan lalu dan penjualan
  2. Prosedur tersimpan dengan parameter, di mana prosedur menghitung penjualan, dan laporan menghitung periode waktu bulan terakhir

Buat dan Uji-Jalankan Prosedur Tersimpan Laporan

Hal pertama di sini adalah membuat prosedur tersimpan yang dapat memenuhi kebutuhan bisnis.

Memilih Prosedur tanpa Pendekatan Parameter

Di sini, kita akan memenuhi spesifikasi bisnis dengan menggunakan prosedur tersimpan tanpa parameter. Ini berarti bahwa kami tidak hanya akan menghitung penjualan menggunakan prosedur tersimpan, tetapi kami juga akan menghitung periode waktu penjualan bulanan berdasarkan tanggal saat ini di dalam prosedur tersimpan, bukan melakukannya pada waktu berjalan.

Mengecilkan Logika Laporan Bulanan

Laporan bulanan tidak benar-benar berarti 'laporan penjualan untuk bulan ini' karena bulan ini belum selesai, jadi kita harus berurusan dengan bulan lengkap terakhir – yaitu bulan sebelumnya.

Beginilah cara sebagian besar laporan bulanan profesional dibuat kecuali dinyatakan lain.

Misalnya, jika tanggal saat ini adalah 06 Juli 2019, maka kami mengharapkan laporan penjualan bulanan menunjukkan kepada kami penjualan untuk Juni 2019 karena Juni adalah bulan terakhir yang lengkap.

Mendesain Logika Laporan Bulanan

Ada banyak cara untuk mendesain logika laporan bulanan di T-SQL.

Konsep StartDate dan AfterEndDate

Ini adalah konsep terpenting dalam pelaporan profesional dengan frekuensi harian, bulanan, mingguan, atau tahunan.

Kita harus menanyakan tabel penjualan dari tanggal mulai sampai tanggal akhir – yang terakhir juga bisa disebut setelah tanggal akhir .

Jadi, dengan asumsi bahwa tanggal saat ini adalah 06 Juli 2019, kita harus menginisialisasi tanggal mulai (StartDate) dengan 01 Jun 2019 dan setelah tanggal akhir (AfterEndDate) dengan 01 Jul 2019, tetapi ini harus dilakukan secara dinamis setiap kali prosedur dipanggil.

Menghitung Tanggal Setelah Akhir

AfterEndDate adalah hari berikutnya setelah bulan terakhir selesai.

Dengan asumsi bahwa hari ini adalah 06 Juli 2019, AfterEndDate adalah 01 Juli 2019.

Cara paling sederhana untuk mencapai ini adalah dengan menggunakan DateFromParts() fungsi yang mengambil parameter Tahun, Bulan, dan Hari untuk menyiapkan tanggal.

Jalankan kode T-SQL berikut untuk mendapatkan AfterEndDate dengan menggunakan DateFromParts() fungsi:

MENYATAKAN @CurrentYear INT,@CurrentMonth INT, @AfterEndDate DATETIMESET @CurrentYear=YEAR(GETDATE())SET @CurrentMontH=Month(GETDATE())SET @AfterEndDate=DATEFROMPARTS(@CurrentYear,@SELECT GETDATE,1) () AS CurrentDate,@AfterEndDate sebagai Next_Day_After_Last_Complete_Month

Outputnya adalah sebagai berikut:

Menghitung Tanggal Mulai

Tanggal Mulai (StartDate) adalah hari pertama bulan terakhir. Ini juga dapat dihitung dengan DATEFROMPARTS() fungsi bersama dengan DATEADD() fungsi.

Mengurangi satu bulan dari AfterEndDate dengan menggunakan DATEADD() fungsi, kami mendapatkan tanggal mulai untuk bulan terakhir.

Silakan lihat kode T-SQL berikut:

-- Menghitung StartDate dan AfterEndDate untuk laporan bulananDECLARE @CurrentYear INT,@CurrentMonth INT, @AfterEndDate DATETIME, @StartDate DATETIMESET @CurrentYear=YEAR(GETDATE())SET @CurrentMontH=Month(GETDATE())SET @AfterEndDate =DATEFROMPARTS(@CurrentYear,@CurrentMonth,1)SET @StartDate=DATEADD(MM,-1,@AfterEndDate) -- Mengurangi satu bulan dari AfterEndDateSELECT GETDATE() AS CurrentDate,@StartDate AS StartDate,@AfterEndDate sebagai Next_Day_After_Month_Complete_Last_> 

Outputnya adalah sebagai berikut:

Prosedur tersimpan ShowMonthlySales

Kami akan membuat kode prosedur tersimpan sedemikian rupa sehingga menghitung periode waktu yang benar ditambah penjualan bulanan berdasarkan perhitungan di atas, tanpa memerlukan parameter.

Buat prosedur tersimpan sebagai berikut:

BUAT PROSEDUR ShowMonthlySalesASSET NOCOUNT ONBEGINDECLARE @CurrentYear INT,@CurrentMonth INT, @AfterEndDate DATETIME, @StartDate DATETIMESET @CurrentYear=YEAR(GETDATE())SET @CurrentMontH=Month(GETDATE())- bulan saat iniSET @AfterEndDate=DATEFROMPARTS(@CurrentYear,@CurrentMonth,1)-- Menghitung hari pertama bulan laluSET @StartDate=DATEADD(MM,-1,@AfterEndDate) -- Mengurangi satu bulan dari AfterEndDate-- Menampilkan penjualan dari hari pertama bulan lalu hingga hari pertama bulan iniSELECT s.SellingDate,s.Customer,s.Product,s.TotalPrice FROM MonthlySale swhere s.SellingDate>[email protected] dan s.SellingDate<@AfterEndDateorder by s .Tanggal JualEND

Tes-Menjalankan prosedur tersimpan

Dengan asumsi tanggal saat ini adalah 06 Juli 2019 , mari jalankan prosedur tersimpan terhadap database sampel ITSales untuk melihat hasilnya:

--Uji-jalankan prosedur ShowMonthlySalesEXEC ShowMonthlySales

Outputnya adalah sebagai berikut:

Selamat! Anda telah berhasil membuat prosedur tersimpan yang dapat dijalankan di belakang laporan penjualan bulanan profesional. Selama tetap tidak tersentuh dan persyaratan bisnis tidak berubah, prosedur ini akan berhasil sepanjang tahun.

Hal yang harus dilakukan

Sekarang setelah Anda dapat menulis prosedur tersimpan untuk laporan bulanan, silakan coba hal-hal berikut untuk meningkatkan keterampilan Anda lebih lanjut:

  1. Buat prosedur tersimpan laporan untuk menampilkan angka penjualan harian berdasarkan tanggal mulai dan setelah tanggal akhir logika dibahas dalam artikel ini
  2. Dengan mengingat logika penjualan bulanan, coba buat prosedur laporan untuk angka penjualan tahunan
  3. Buat laporan SSRS untuk menunjukkan penjualan bulanan berdasarkan prosedur tersimpan yang disebutkan dalam artikel ini sambil menggunakan artikel berikut untuk referensi:
  • Membuat Laporan SSRS yang Berfokus pada Pelanggan dengan Parameter
  • Pengembangan Laporan SSRS dalam Istilah Sederhana

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 Cara Memilih Baris yang Cocok dengan Semua Item dalam Daftar (T-SQL)

  2. Transformasi Digital:Semuanya Dimulai Dengan Pemikiran Data

  3. Tabel Pemecahan Masalah Tidak Ditemukan Kesalahan

  4. Hal-hal menarik tentang BUKAN pemicu

  5. Penyembunyian Data Real-Time Menggunakan Pemicu