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

PIVOT स्रोत के लिए डेटा सॉर्ट करना

जब तक मैं आपके स्पष्टीकरण में कुछ याद नहीं कर रहा हूँ, तब तक आपको AttributeMask की आवश्यकता नहीं है . यदि अंतिम कॉलम नाम केवल मूल कॉलम नाम होने जा रहे हैं और फिर Kind मान हैं, तो आप इसका उपयोग कर सकते हैं:

select *
from
(
    select LotId,
        SomeText,
        col+'_'+Kind col,
        value
    from
    (
        select l.LotId, 
            l.SomeText,
            cast(a.AttributeId as varchar(8)) attributeid,
            cast(a.LotId as varchar(8)) a_LotId,
            a.Val,
            a.Kind
        from @Lot l
        left join @Attribute a
            on l.LotId = a.LotId
    ) src
    cross apply
    (
        values ('attributeid', attributeid),('LotId', a_LotId), ('Value', Val), ('Kind', Kind)
    ) c (col, value)
) d
pivot
(
    max(value)
    for col in (attributeid_Kind1, LotId_Kind1, Value_Kind1, Kind_Kind1,
                attributeid_Kind2, LotId_Kind2, Value_Kind2, Kind_Kind2,
                attributeid_Kind3, LotId_Kind3, Value_Kind3, Kind_Kind3)
) piv;

देखें SQL Fiddle with Demo . यह परिणाम देता है:

| LOTID | SOMETEXT | ATTRIBUTEID_KIND1 | LOTID_KIND1 | VALUE_KIND1 | KIND_KIND1 | ATTRIBUTEID_KIND2 | LOTID_KIND2 | VALUE_KIND2 | KIND_KIND2 | ATTRIBUTEID_KIND3 | LOTID_KIND3 | VALUE_KIND3 | KIND_KIND3 |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|     1 |  WithAll |                 1 |           1 |        Foo1 |      Kind1 |                 2 |           1 |        Foo2 |      Kind2 |                 3 |           1 |        Foo3 |      Kind3 |
|     2 |    Hello |            (null) |      (null) |      (null) |     (null) |                10 |           2 |        Bar2 |      Kind2 |            (null) |      (null) |      (null) |     (null) |
|     3 |    World |            (null) |      (null) |      (null) |     (null) |            (null) |      (null) |      (null) |     (null) |                12 |           3 |        Bar3 |      Kind3 |



  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. WHERE col IN (...) कंडीशन पर सीमा

  3. SQL सर्वर में 7 दिन के रोलिंग औसत के लिए SQL क्वेरी

  4. SQL सर्वर सभी ऑपरेटर समझाया गया

  5. SQL सर्वर डेटाबेस ग्रोथ पर डेटा संग्रह को स्वचालित कैसे करें