Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Динамични централни колони в SQL Server

Нещо като това:

ДЕКЛАРИРАНЕ @cols КАТО NVARCHAR(MAX);ДЕКЛАРИРАНЕ @query КАТО NVARCHAR(MAX);изберете @cols =STUFF((ИЗБЕРЕТЕ различен ',' + QUOTENAME(Име) ОТ свойството ЗА XML PATH('') , TYPE ).value('.', 'NVARCHAR(MAX)') , 1, 1, '');SELECT @query ='SELECT *FROM( SELECT o.object_id, p.Name, o.value FROM propertyObjects AS o Свойство INNER JOIN AS p ON o.Property_Id =p.Id) AS tPIVOT ( MAX(стойност) FOR Name IN( ' + @cols + ' )' +' ) AS p; '; изпълни (@query); 

Демонстрация на SQL Fiddle.

Това ще ви даде нещо подобно:

<предварителен код>| OBJECT_ID | ИМОТ1 | ИМОТ2 | ИМОТ3 | ИМОТ4 |------------------------------------------------ -------------| 1 | ее | fd | fdf | ewre || 2 | dsd | sss | dfew | dff |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WHERE IN (масив от идентификационни номера)

  2. IDENTITY() срещу IDENTITY() в SQL Server:Каква е разликата?

  3. Какъв размер използвате за varchar(MAX) във вашата декларация за параметри?

  4. TSQL Pivot без агрегатна функция

  5. Как да извадите 30 дни от текущата дата с помощта на SQL Server