Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Các cột tổng hợp động trong SQL Server

Một cái gì đó như thế này:

DECLARE @cols AS NVARCHAR(MAX);
DECLARE @query AS NVARCHAR(MAX);

select @cols = STUFF((SELECT distinct ',' +
                        QUOTENAME(Name)
                      FROM property
                      FOR 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 property AS p ON o.Property_Id = p.Id
) AS t
PIVOT 
(
  MAX(value) 
  FOR Name IN( ' + @cols + ' )' +
' ) AS p ; ';

 execute(@query);

Bản trình diễn SQL Fiddle.

Điều này sẽ cung cấp cho bạn một cái gì đó như thế này:

| OBJECT_ID | PROPERTY1 | PROPERTY2 | PROPERTY3 | PROPERTY4 |
-------------------------------------------------------------
|         1 |        ee |        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. Kiểu văn bản SQL Server so với kiểu dữ liệu varchar

  2. Có sự khác biệt nào giữa IS NULL và =NULL không

  3. các lựa chọn thay thế để THAY THẾ trên kiểu dữ liệu văn bản hoặc ntext

  4. Cách tạo thả các tập lệnh Ràng buộc Duy nhất trong Cơ sở dữ liệu SQL Server - Hướng dẫn SQL Server / TSQL Phần 99

  5. Làm cách nào để chuyển XML từ C # sang một thủ tục được lưu trữ trong SQL Server 2008?