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

SQL सर्वर में PIVOT क्लॉज

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

SQL सर्वर में 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

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

cot_chuyen

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

bidanh_bang_chuyen

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

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

पी>

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

पी>

पिवट क्लॉज के साथ उदाहरण

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

so_nhan_en_production id_phong 12009 गुयेन हुआंग 54000 45 34974 फाम होआ 80000 45 34987 फान लैन 42000 45 45001 ट्रान हुआ 57500 30 75623 वू होंग 65000 30

इसके साथ एक क्रॉस-क्वेरी बनाने के लिए नीचे SQL कमांड चलाएँ धुरी खंड।

  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;

लौटा हुआ परिणाम निम्न जैसा दिखेगा।

टोंगलुओंगथियोफोंग 30 45 TongLuong 122500 176000

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

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

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

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

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

अगला चयन कथन है जो नई तालिका के लिए स्रोत डेटा लौटाएगा।

इस उदाहरण में, यह id_fong और तालिका से है।

  (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_fong के सीमित मानों की सूची हैं और ज़रूरी नहीं कि इनमें सभी मान हों.

 FOR id_phong IN ([30], [45]) 
उदाहरण के लिए

डीडीएल / डीएमएल

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

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

  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 सर्वर में ORDER BY क्लॉज

    ORDER BY क्लॉज का उपयोग SQL सर्वर के लौटाए गए परिणाम सेट में रिकॉर्ड्स को फ़िल्टर करने के लिए किया जाता है। इस क्लॉज का इस्तेमाल केवल सेलेक्ट स्टेटमेंट में ही किया जा सकता है। क्लॉज सिंटैक्स द्वारा ऑर्डर करें SELE CT biểu thức FROM bảng [WHERE điều kiện] ORDER BY bi knowledgeable [ASC | DESC]

  1. जहां SQL सर्वर में क्लॉज

    SQL सर्वर (T-SQL) में, WHERE क्लॉज का उपयोग SELECT, INSERT, UPDATE, या DELETE स्टेटमेंट से परिणामों को फ़िल्टर करने के लिए किया जाता है। WHERE क्लॉज सिंटैक्स WHERE điều kiện; परिवर्तनीय नाम या चर मान स्थिति - वे शर्तें जिनका चयन करने के लिए रिकॉर्ड को पूरा करना होगा। उदाहरण के लिए - एक शर्त SEL

  1. SQL सर्वर में FROM क्लॉज

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