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. MySQLDECLAREのSELECTINTO変数により構文エラーが発生しますか?

    2. sqlfiddleでストアドプロシージャを呼び出す方法は?

    3. 大きな結果セットを伴うPDO/MySQLメモリ消費

    4. 関数からレコードのセット(仮想テーブル)を返します