Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

gunakan nilai yang dipilih sql sebagai nama baris untuk pilihan lain

Untuk SQL Server 2005+, Anda dapat menggunakan SQL dinamis dan PIVOT .

DECLARE @ValuesNames NVARCHAR(4000), @Query NVARCHAR(MAX)
SET @ValuesNames = ''

SELECT @ValuesNames = @ValuesNames + QUOTENAME([name]) + ','
FROM [values] A
INNER JOIN value_type B
ON B.value_id = A.id
GROUP BY [name]
ORDER BY [name]

SET @ValuesNames = LEFT(@ValuesNames,LEN(@ValuesNames)-1)

SET @Query = '
SELECT [date], '[email protected]+'
FROM (  SELECT [date], [name], value
        FROM [values]
        LEFT JOIN value_type ON value_id = id) A
PIVOT(SUM(value) FOR [name] IN ('[email protected]+')) AS PT
'
EXEC sp_executesql @Query


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat memuat DLL 'SqlServerSpatial.dll'

  2. Pernyataan SQL - Bagaimana Meningkatkan kecepatan dengan pengindeksan

  3. SQL RANK() melalui PARTITION pada tabel yang digabungkan

  4. sp_executesql lambat dengan parameter

  5. Izin untuk mengakses sys.dm_db_index_usage_stats