sql >> データベース >  >> RDS >> Sqlserver

複数の X 軸列を持つ SQL Server PIVOT

    あなたが言ったように、動的 SQL が必要になるので、まず こちらのリンク にアクセスしてください。 .それを読んだら、次のことを試してください:

    コメントに続く更新されたコード:

    DECLARE @cols AS NVARCHAR(MAX), @cols2 AS NVARCHAR(MAX), @query AS NVARCHAR(MAX);
    
    WITH CTE AS
    (
        SELECT *, CAST([Year] AS NVARCHAR(4))+RIGHT('00'+CAST([Month] AS NVARCHAR(2)),2) YearMonth
        FROM YourTable
    )
    
    SELECT @cols = STUFF((  SELECT DISTINCT ',' + QUOTENAME(YearMonth) 
                            FROM CTE 
                            FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,''),
           @cols2 = STUFF(( SELECT DISTINCT ',ISNULL(' + QUOTENAME(YearMonth) + ',0) AS ' + QUOTENAME(YearMonth)
                            FROM CTE 
                            FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')
    
    
    SET @query = '
    SELECT Payroll, Forname, Surname, ' + @cols2 + '
    FROM (  SELECT  Payroll, Forname, Surname, 
                    CAST([Year] AS NVARCHAR(4))+RIGHT(''00''+CAST([Month] AS NVARCHAR(2)),2) YearMonth,
                    Amount
            FROM YourTable ) T
    PIVOT(SUM(Amount) FOR YearMonth IN ('[email protected]+')) PT'
    
    EXEC(@Query)
      

    1. PHP-MySqlを使用したフォームの検証と挿入

    2. 結合からのOracle階層クエリ開始句

    3. 前の行mysqlを選択しますか?

    4. SQLServerで外部キーを持つすべてのテーブルを返す7つの方法