मेरे पास एक डेटा स्रोत है जो इस तरह स्वरूपित बिक्री के लिए लेनदेन का वर्णन करता है:
Transaction | Date | Location | UPC | LineNumber
----------------+-----------+----------+-----------+------------
123 | 7/2/2016 | Store A | 123456789 | 1
123 | 7/2/2016 | Store A | 123965478 | 2
124 | 7/2/2016 | Store A | 123456789 | 1
124 | 7/2/2016 | Store A | 123459879 | 2
124 | 7/2/2016 | Store A | 123456789 | 3
123 | 7/3/2016 | Store B | 123456789 | 1
123 | 7/3/2016 | Store B | 958685458 | 2
हमारे रिपोर्टिंग टूल में इस डेटा का उपयोग करने के लिए, मुझे इसे लेन-देन-स्थान के रूप में अद्वितीय और यूपीसी के साथ लाइन नंबर के आधार पर कॉलम के रूप में प्रारूपित करने की आवश्यकता है:
Transaction | Date | UPC 1 | UPC 2 | UPC 3
------------+-----------+-----------+----------
123-Store A | 7/2/2016 | 123456789 | 123965478 | NULL
124-Store A | 7/2/2016 | 123456789 | 123459879 | 123456789
123-Store B | 7/3/2016 | 123456789 | 958685458 | NULL
किसी भी विचार की सराहना की जाती है
1 उत्तर
मानक PIVOT चाल चलेगा। PIVOT को कॉल करने से पहले आपको बस CTE या नेस्टेड सेलेक्ट में अपने कॉनटेनेटेड ट्रांजैक्शन कॉलम को परिभाषित करना होगा।
DECLARE @Table AS TABLE ([Transaction] INT, Date DATE, Location VARCHAR(15), UPC INT, LineNumber INT)
INSERT INTO @Table ([Transaction], Date, Location, UPC, LineNumber)
VALUES
(123,'7/2/2016','Store A',123456789,1)
,(123,'7/2/2016','Store A',123965478,2)
,(124,'7/2/2016','Store A',123456789,1)
,(124,'7/2/2016','Store A',123459879,2)
,(124,'7/2/2016','Store A',123456789,3)
,(123,'7/3/2016','Store B',123456789,1)
,(123,'7/3/2016','Store B',958685458,2)
;WITH cteCombineTransLocation AS (
SELECT
CAST([Transaction] AS VARCHAR(50)) + '-' + Location as [Transaction]
,Date
,UPC
,LineNumber
FROM
@Table
)
SELECT
[Transaction]
,[Date]
,[1] as UPC1
,[2] as UPC2
,[3] as UPC3
FROM
cteCombineTransLocation
PIVOT (
MAX(UPC)
FOR LineNumber IN ([1],[2],[3])
) p
यदि आप अधिक यूपीसी कॉलम चाहते हैं या यदि वह संख्या गतिशील है तो टिप्पणीकारों ने बताया कि आप गतिशील एसक्यूएल का उपयोग कर सकते हैं, लेकिन आपको अभी भी अपना समेकित क्षेत्र तैयार करना होगा।
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।