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

използвайте избраните от sql стойности като имена на редове за друг избор

За SQL Server 2005+ можете да използвате динамичен SQL и 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. OPENROWSET с Excel файл

  2. Как да проверите дължината на низа и след това да изберете подниз в Sql Server

  3. файлов поток в sql сървър и C# за aspx

  4. Вмъкване на недублирани данни от родителска таблица към дъщерна таблица в SQL сървър 2008

  5. Защо xp_cmdshell не работи в SQL Server 2012?