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

कॉलम के आधार पर परिणामों को क्रमबद्ध करें पंक्ति नहीं

स्तंभों को क्रमबद्ध करने का अपेक्षाकृत सरल तरीका यहां दिया गया है। अगर आप पहले अनपिवट करते हैं , सॉर्ट करें और पिवट आपका डेटा, आपको क्रमबद्ध कॉलम मिलेंगे।

यहां उदाहरण के साथ Sql Fiddle है

-- Assign arbitrary numbers to records
-- You might skip this part if you have unique column
-- in which case you should replace RecordNumber with this ID
; with numbered as
(
  select *,
         row_number() over (order by (select null)) RecordNumber
    from test
),
-- Generate order by
-- For all the columns in record.
-- Rn will always be in range
-- 1..NumberOfColumns
-- Order is done on unpivoted data
ordered as
(
  select *,
         row_number() over (partition by RecordNumber
                            order by v desc) rn
    from numbered
 -- list all the columns here
 -- v is for value
 -- c is for column
 unpivot (v for c in (c1, c2, c3)) u
)
-- Finally return the data in original layout
select RecordNumber,
       [1] c1,
       [2] c2,
       [3] c3
  from 
  (
    -- Only the columns needed by the query
    -- Pivot will not play nice even if you
    -- Select only subset of columns in
    -- outer query
    select RecordNumber,
           v,
           Rn
      from ordered
  ) o
 -- Get value for row numbers 1..NumberOfColumns
 pivot (min(v) for Rn in ([1], [2], [3])) p

आप हेडर पंक्तियों को जोड़ना चाह सकते हैं ताकि आपको पता चल सके कि कौन सा मान किस कॉलम से आता है। ऐसा करने के लिए मैं हेडर/पंक्ति की पहचान करने वाला एक कॉलम जोड़ूंगा, संघ सभी को o संबंधित शीर्षलेख और क्रम प्राप्त करने के लिए जिससे यह सुनिश्चित हो सके कि ये दो पंक्तियाँ एक साथ रहें:

  (
    select RecordNumber,
           v,
           Rn,
           1 HdrRow
      from ordered
     union all
    select RecordNumber,
           c,    -- Column name is in c
           Rn,
           0 HdrRow
      from ordered
  ) o
    ...
  order by RecordNumber, HdrRow


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तालिका के लिए पंक्ति का आकार निर्धारित करें

  2. त्रुटि संदेश 4151 को ठीक करें "NULLIF के लिए पहले तर्क का प्रकार NULL स्थिरांक नहीं हो सकता क्योंकि SQL सर्वर में पहले तर्क के प्रकार को जानना होगा"

  3. SQL सर्वर में DELETE और TRUNCATE तालिका के बीच अंतर

  4. Sql सर्वर अस्थायी तालिका गायब हो जाती है

  5. SQL 2008 R2 CTE सिंटैक्स त्रुटि एक चयन कथन में: