Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

मैं पिवट का उपयोग कैसे कर सकता हूं?

मैंने यहां आपकी तकनीकी पोस्टिंग की जांच की है और मैंने पाया कि आप PIVOT का उपयोग नहीं करना चाहते क्योंकि यह केवल समग्र परिणाम देता है। UNPIVOT आपको जो खोज रहा है उसके बहुत करीब पहुंच जाएगा और फिर प्रत्येक कॉलम के लिए टेबल पर बस एक जॉइन करें। आपके द्वारा नीचे दिए गए डेटा के साथ मैंने एक उदाहरण बनाया है:

----Create the table and insert values as portrayed in the previous example.
CREATE TABLE pvt (EmpId int, Day1 char(1), Day2 char(1), Day3 char(1));
CREATE TABLE pvt2 (EmpId int, DayNum CHAR(4), DayNums CHAR(4));
GO
INSERT INTO pvt VALUES (1,'A','P','P');
INSERT INTO pvt VALUES (2,'P','P','P');
GO
--Unpivot the table.
INSERT INTO pvt2
SELECT EmpId,DayNum, DayNums
FROM 
   (SELECT EmpId, Day1, Day2, Day3
   FROM pvt) p
UNPIVOT
   (DayNums FOR DayNum IN 
      (Day1,Day2,Day3)
)AS unpvt;
GO
SELECT
 a.DayNum,
 a.DayNums,
    b.DayNums
FROM pvt2 a
 JOIN pvt2 b ON a.DayNum = b.DayNum
  AND a.EmpId=1
  AND b.EmpId = 2

उपरोक्त कोड चलाने पर वापस आ जाएगा:

Exp   1  2  3 as EmpId
----------
Day1  A  P  ....
Day2  P  P  ...
Day3  P  P  ...

मुझे पता है कि एकमात्र अन्य समाधान गतिशील एसक्यूएल है और यह धीमा है और इसके खतरे हैं। हालांकि, अगर आप एक बार कोड चला रहे हैं तो वह भी काम कर सकता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DATETIME कॉलम के लिए रैंडम मान

  2. SQL सर्वर में किसी तालिका से विशिष्ट रिकॉर्ड कैसे प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल 112

  3. टैब्‍लॉक बनाम टैब्‍लॉक्‍स

  4. INSERT कथनों के लिए कॉलम सूची में डॉट से अलग किए गए उपसर्गों को अनदेखा क्यों किया जाता है?

  5. डेटा सेट खोजने के लिए तालिका के माध्यम से लूप कैसे करें?