Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> SQL Server

SQL Server में PIVOT क्लॉज

SQL Server में PIVOT क्लॉज

SQL Server (Transact-SQL) में, PIVOT क्लॉज क्रॉस टेबुलेशन की अनुमति देता है जिससे डेटा को एक टेबल से दूसरी टेबल में स्थानांतरित किया जा सकता है, यानी कुल परिणाम प्राप्त करके पंक्तियों से कॉलम में ले जाया जाता है।

SQL Server में PIVOT क्लॉज
उदाहरण डेटा टेबल में योग की गणना करता है और फिर पंक्तियों को कॉलम में पास करता है

PIVOT क्लॉज सिंटैक्स

SELECT cot_dautien AS bidanh_cot_dautien,
[giatri_chuyen1], [giatri_chuyen2], … [giatri_chuyen_n]
FROM
(bang_nguon) AS bidanh_bang_nguon
PIVOT
(
ham_tong (cot_tong)
FOR
cot_chuyen IN ([giatri_chuyen1], [giatri_chuyen2], … [giatri_chuyen_n])
) AS bidanh_bang_chuyen;

चर नाम या मान

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

वह कॉलम या एक्सप्रेशन जिसका उपयोग ham_tong के साथ किया जाता है।

cot_chuyen

वह कॉलम जिसमें स्थानांतरित किए जाने वाले मान होते हैं।

bidanh_bang_chuyen

स्थानांतरण के बाद टेबल का उपनाम।

PIVOT क्लॉज का उपयोग SQL Server के बाद के संस्करणों में किया जा सकता है: SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, और SQL Server 2005।

ट्यूटोरियल में चरणों का पालन करने के लिए, इस लेख के अंत में टेबल बनाने के लिए DDL सेक्शन और डेटा बनाने के लिए DML देखें और फिर अपने डेटाबेस पर चलाकर देखें।

PIVOT क्लॉज के साथ उदाहरण

हमारे पास नीचे दिखाए गए डेटा के साथ टेबल है।

so_nhanvienhotenluongid_phong
12009NguyenHuong5400045
34974PhamHoa8000045
34987PhanLan4200045
45001TranHua5750030
75623VuHong6500030

PIVOT क्लॉज के साथ क्रॉस-क्वेरी बनाने के लिए नीचे दिए गए SQL कमांड को चलाएं।

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

वापस किया गया परिणाम निम्नलिखित जैसा दिखेगा।

TongLuongTheoPhong3045
TongLuong122500176000

उपरोक्त उदाहरण स्थानांतरण के बाद डेटा वाली एक टेबल बनाता है, जो आईडी 30 वाले कमरे और आईडी 45 वाले कमरे के कुल वेतन को दर्शाता है। परिणाम एक पंक्ति पर 2 कॉलम के साथ है, प्रत्येक कॉलम 1 कमरा है।

क्रॉस-क्वेरी की नई टेबल में कॉलम निर्दिष्ट करें

पहले यह निर्धारित करने की आवश्यकता है कि स्थानांतरण टेबल में कौन से सूचना क्षेत्र शामिल करने हैं। इस उदाहरण में, TongLuong पहला कॉलम है, फिर 2 कॉलम id_phong 30 और id_phong 45।

SELECT 'TongLuong' AS TongLuongTheoPhong,
[30], [45]

स्रोत टेबल में डेटा निर्धारित करें

अगला वह SELECT स्टेटमेंट है जो नई टेबल के लिए स्रोत डेटा वापस करेगा।

इस उदाहरण में, यह id_phong और luong है nhanvien टेबल से।

(SELECT id_phong, luong
FROM nhanvien) AS BangNguon

स्रोत क्वेरी के लिए उपनाम निर्दिष्ट करने की आवश्यकता है, इस उदाहरण में यह BangNguon है।

कुल गणना फ़ंक्शन निर्धारित करें

क्रॉस क्वेरी में उपयोग किए जा सकने वाले फ़ंक्शंस में SUM, COUNT, MIN, MAX और AVG शामिल हैं। इस उदाहरण में, योग फ़ंक्शन SUM है।

PIVOT
(SUM(luong)

स्थानांतरित किए जाने वाले मान निर्धारित करें

अंत में, परिणाम शामिल करने के लिए स्थानांतरित किए जाने वाले मान की आवश्यकता होती है। यह क्रॉस क्वेरी में कॉलम हेडर होगा।

इस उदाहरण में, हमें केवल id_phong 30 और 45 वापस करने की आवश्यकता है। ये मान नई टेबल में कॉलम नाम होंगे। याद रखें कि ये मान id_phong के सीमित मूल्यों की सूची हैं और आवश्यक नहीं कि सभी मूल्यों को समाहित करें।

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

उदाहरणों के लिए DDL / DML

यदि आपके पास डेटाबेस है और ऊपर दिए गए PIVOT निर्देश मैनुअल में उदाहरणों को आज़माना चाहते हैं, तो आपको DDL / DML की आवश्यकता होगी।

DDL - डेटा परिभाषा भाषा PIVOT क्लॉज उदाहरण में उपयोग के लिए टेबल निर्माण कमांड (CREATE TABLE) हैं।

CREATE TABLE phong
( id_phong INT NOT NULL,
ten_phong VARCHAR(50) NOT NULL,
CONSTRAINT pk_phong PRIMARY KEY (id_phong)
) ;
CREATE TABLE 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, 'Nguyen', 'Huong', 54000, 45);
INSERT INTO nhanvien
(so_nhanvien, ho, ten, luong, id_phong)
VALUES
(34974, 'Pham', 'Hoa', 80000, 45);
INSERT INTO nhanvien
(so_nhanvien, ho, ten, luong, id_phong)
VALUES
(34987, 'Phan', 'Lan', 42000, 45);
INSERT INTO nhanvien
(so_nhanvien, ho, ten, luong, id_phong)
VALUES
(45001, 'Tran', 'Hue', 57500, 30);
INSERT INTO nhanvien
(so_nhanvien, ho, ten, luong, id_phong)
VALUES
(75623, 'Vu', 'Hong', 65000, 30);
  1. - SQL Server में ORDER BY क्लॉज

    SQL Server में ORDER BY क्लॉज ORDER BY क्लॉज का उपयोग SQL Server के वापस किए गए परिणाम सेट में रिकॉर्ड्स को फ़िल्टर करने के लिए किया जाता है। इस क्लॉज का उपयोग केवल SELECT स्टेटमेंट में किया जा सकता है। ORDER BY क्लॉज सिंटैक्स SELECT bieu_thuc FROM bang [WHERE dieu_kien] ORDER BY bieu_thuc [ASC | D

  1. - SQL Server में WHERE क्लॉज़

    SQL Server (T-SQL) में WHERE क्लॉज़ SQL Server में WHERE क्लॉज़ का उपयोग SELECT, INSERT, UPDATE, या DELETE स्टेटमेंट्स से परिणामों को फ़िल्टर करने के लिए किया जाता है। WHERE क्लॉज़ सिंटैक्स WHERE शर्त; चर नाम या चर मान Condition (शर्त) - वे शर्तें जिन्हें रिकॉर्ड को पूरा करना होगा ताकि उसे चुना जा

  1. - SQL Server में FROM क्लॉज़

    SQL Server (T-SQL) में FROM क्लॉज़ SQL Server FROM क्लॉज़ का उपयोग SQL Server क्वेरी में आवश्यक तालिकाओं को सूचीबद्ध करने के लिए किया जाता है। FROM क्लॉज़ सिंटैक्स FROM bang1 [ { INNER JOIN | LEFT OUTER JOIN | RIGHT OUTER JOIN | FULL OUTER JOIN } bang2 ON bang1.cot1 = bang2.cot1 ] चर नाम और चर मान