কম্পিউটার

SQL সার্ভারে PIVOT ধারা

SQL সার্ভারে (Transact-SQL), PIVOT ক্লজ ক্রস ট্যাবুলেশনকে এক টেবিল থেকে অন্য টেবিলে ডেটা স্থানান্তর করার অনুমতি দেয়, অর্থাৎ, সামগ্রিক ফলাফল পান এবং লাইন থেকে কলামে যেতে পারেন।

SQL সার্ভারে PIVOT ধারা
উদাহরণ যোগফল গণনা করে এবং তারপর ডেটা টেবিলের কলামগুলিতে সারিগুলি পাস করে

PIVOT ক্লজ সিনট্যাক্স

  SELECT cot_ dautien AS , 
[giatri_chuyen1], [giatri_chuyen2], … [giatri_chuyen_n]
FROM
() AS
PIVOT
(
ham_tong ()
FOR
IN ([giatri_chuyen1], [giatri_chuyen2], … [giatri_chuyen_n])
) AS n>; ) AS n>;

ভেরিয়েবল নাম বা পরিবর্তনশীল মান

cot_dautien

পরিবর্তনের পরে কলাম বা এক্সপ্রেশনটি নতুন টেবিলের প্রথম কলামে পরিণত হবে৷

bidanh_cot_dautien

স্থানান্তরের পরে নতুন টেবিলে প্রথম কলামের নাম৷

giatri_chuyen1, giatri_chuyen2, . giatri_chuyen_n

স্থানান্তর করার জন্য মানগুলির তালিকা৷

bang_nguon

SELECT স্টেটমেন্ট নতুন টেবিলে সোর্স ডেটা (প্রাথমিক ডেটা) নেয়৷

bidanh_bang_nguon

bang_nguon এর উপনাম

ham_tong

সমফল ফাংশন যেমন SUM, COUNT, MIN, MAX বা AVG৷

cot_tong

কলাম বা এক্সপ্রেশন হ্যাম_টং এর সাথে ব্যবহার করা হয়।

cot_chuyen

কলামে স্থানান্তর করার মান রয়েছে৷

bidanh_bang_chuyen

স্থানান্তরের পরে টেবিলের উপনাম৷

পিভট ক্লজটি SQL সার্ভারের পরবর্তী সংস্করণগুলিতে ব্যবহার করা যেতে পারে:SQL সার্ভার 2014, SQL সার্ভার 2012, SQL সার্ভার 2008 R2, SQL সার্ভার 2008 এবং SQL সার্ভার 2005৷

টিউটোরিয়ালের ধাপগুলি অনুসরণ করতে, এই নিবন্ধের শেষে টেবিল তৈরি করার জন্য DDL বিভাগ এবং ডেটা তৈরি করার জন্য DML দেখুন এবং তারপর আপনার নিজস্ব ডাটাবেসে চালানোর চেষ্টা করুন। পি>

PIVOT ধারা সহ উদাহরণ

নিচে দেখানো ডেটা সহ আমাদের কাছে টেবিল আছে৷

so_nhan_en_production id_phong 12009 Nguyen Huong 54000 45 34974 Pham Hoa 80000 45 34987 Phan Lan 42000 45 45001 Tran Hua 57500 30 75623 Vu Hong 65000 30 75000 পিভট ধারা।

  SELECT 'TongLuo ng' AS TongLuongTheoPhong, 
[30], [45]
FROM
(SELECT id_phong, luong
FROM nhanvien) AS BangNguon
PIVOT
(
SUM(luong)
FOR id_phong IN ([30], [45])
) AS BangChuyen;

ফেরত ফলাফল নিচের মত দেখাবে।

TongLuongTheoPhong 30 45 TongLuong 122500 176000

উপরের উদাহরণটি ডেটা স্থানান্তরিত হওয়ার পরে একটি টেবিল তৈরি করে, যা নির্দেশ করে যে রুমের মোট বেতনের একটি আইডি 30 এবং রুমের একটি ID 45 রয়েছে৷ ফলাফলটি 2টি কলাম সহ একটি সারিতে রয়েছে, প্রতিটি কলাম 1 রুম।

ক্রস-কোয়েরির নতুন টেবিলে কলামটি নির্দিষ্ট করুন

প্রথমে তথ্যের কোন ক্ষেত্র স্থানান্তর টেবিলে অন্তর্ভুক্ত করতে চান তা নির্ধারণ করতে হবে৷ এই উদাহরণে, TongLuong হল প্রথম কলাম, তারপর 2 কলাম id_phong 30 এবং id_phong 45৷

  SEL ECT 'TongLuong' AS TongLuongTheoPhong, 
[30], [ 45]

উৎস টেবিলে ডেটা নির্ধারণ করুন

এর পরেরটি হল SELECT স্টেটমেন্ট যা নতুন টেবিলের জন্য উৎস ডেটা ফেরত দেবে৷

এই উদাহরণে, এটি id_phong এবং টেবিল থেকে।

  (SELECT id_phong, lu ong 
FROM nhanvien) AS Ba ngNguon

উৎস কোয়েরির উপনাম নির্দিষ্ট করতে হবে, এই উদাহরণে BangNguon।

মোট গণনা ফাংশন নির্ধারণ করুন

ক্রস কোয়েরিতে যে ফাংশনগুলি ব্যবহার করা যেতে পারে সেগুলির মধ্যে SUM, COUNT, MIN, MAX এবং AVG অন্তর্ভুক্ত৷ এই উদাহরণে, যোগফল ফাংশন SUM.

 PIVOT 
(SUM(luong)

স্থানান্তর করার মান নির্ধারণ করুন

অবশেষে, ফলাফল অন্তর্ভুক্ত করার জন্য মান স্থানান্তর করা প্রয়োজন৷ এটি ক্রস কোয়েরির কলাম হেডার হবে।

এই উদাহরণে, আমাদের শুধুমাত্র id_folder 30 এবং 45 ফেরত দিতে হবে। এই মানগুলো হবে নতুন টেবিলের কলামের নাম। মনে রাখবেন যে এই মানগুলি id_phong-এর সীমিত মানগুলির একটি তালিকা এবং অগত্যা সমস্ত মান ধারণ করে না৷

 FOR id_phong IN ([30], [45]) 

উদাহরণগুলির জন্য DDL / DML

আপনার যদি একটি ডাটাবেস থাকে এবং উপরের PIVOT নির্দেশিকা ম্যানুয়ালটিতে উদাহরণগুলি চেষ্টা করে দেখতে চান, তাহলে আপনার DDL / DML প্রয়োজন হবে৷

DDL - ডেটা সংজ্ঞা ভাষা পিভট ক্লজ উদাহরণে ব্যবহারের জন্য টেবিল তৈরির কমান্ড (CREATE TABLE)।

  CREATE TA BLE phong 
( id_phong INT NOT NULL,
ten_phong VARCHAR(50) NOT NULL,
CONSTRAINT pk_phong PRIMARY KEY (id_phong)
) ;
  CREATE T ABLE nhanvien 
( so_nhanvien INT NOT NULL,
ho VARCHAR(50) NOT NULL,
ten VARCHAR(50) NOT NULL,
luong INT,
id_phong INT,
CONSTRAINT pk_nhanvien PRIMARY KEY (so_nhanvien)
) ;

DML - ডেটা ম্যানিপুলেশন ভাষা টেবিলের জন্য প্রয়োজনীয় ডেটা তৈরি করার জন্য INSERT বিবৃতি।

  INSERT INTO phong 
(id_phong, ten_phong)
VALUES
(30, 'Ketoan ');
  INSERT INTO  phong 
(id_phong, ten_phong)
VALUES
(45, 'Banhang');
  INSERT INTO nhanvien 
(so_nhanvien, ho, ten, luong, id_phong)
VALUES
(12009, 'Nguye n', 'Huong', 54000, 45);
  INSERT INTO  nhanvien 
(so_nhanvien, ho, ten, luong, id_phong)
VALUES
(34974, 'Pham', 'Flowers', 80000, 45);
  INSERT INTO anvien 
(so_nhanvien, ho, ten, luong, id_phong)
VALUES
(34987, 'Phan', 'La n', 42000, 45);
  INSERT  INTO nhanvien 
(so_nhanvien, ho, ten, luong, id_phong)
VALUES
45001, 'Tr an', 'Hue', 57500, 30);
  INSERT INTO home 
(so_nhanvien, ho, ten, luong, id_phong)
VALUES
(75623, 'Vu', 'Hong' , 65000, 30);

  1. SQL সার্ভারে আলাদা ধারা

  2. SQL সার্ভারে ORDER BY ধারা

  3. SQL সার্ভারে WHERE ক্লজ

  4. SQL সার্ভারে FROM ক্লজ