sql >> Databáze >  >> RDS >> Sqlserver

použít vybrané hodnoty SQL jako názvy řádků pro jiný výběr

Pro SQL Server 2005+ můžete použít dynamické SQL a 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. Jak povolit CDC na sadě tabulek NEBO povolit na všech tabulkách v databázi na SQL Server - SQL Server výukový program

  2. Reader.Read() selže při čtení řádků, i když má řádky

  3. INSERT INTO Tabulka z více tabulek

  4. problém s mysqli_real_escape_string a dvojitými uvozovkami