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 като varchar(8)) a_LotId, a.Val, a.Kind от @Lot l ляво присъединяване към @Attribute a на l.LotId =a.LotId ) src cross apply ( values ​​('attributeid', attributeid),( 'LotId', a_LotId), ('Value', Val), ('Kind', Kind) ) c (col, value)) dpivot( 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 с демонстрация . Това дава резултата:

<предварителен код>| ЛОТИД | НЯКАКЪВ ТЕКСТ | 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 | Вид1 | 2 | 1 | Foo2 | Вид2 | 3 | 1 | Foo3 | Вид 3 || 2 | Здравейте | (нула) | (нула) | (нула) | (нула) | 10 | 2 | Бар2 | Вид2 | (нула) | (нула) | (нула) | (нула) || 3 | Свят | (нула) | (нула) | (нула) | (нула) | (нула) | (нула) | (нула) | (нула) | 12 | 3 | Бар3 | Вид3 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да мигрирате задания на SQL сървър от един екземпляр на SQL сървър към друг

  2. Използване на колона, извлечена от функция за класиране в клауза where (SQL Server 2008)

  3. SQL Server Невалидно име на колона след добавяне на нова колона

  4. Типове курсори на SQL Server - Статичен курсор само за препращане | Урок за SQL Server / Урок за TSQL

  5. sql:стойности на редове като колони