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

テーブル構造の操作

    これを試してください

    CREATE TABLE #table1
      (
         sourceid  INT,
         name      VARCHAR(50),
         value     VARCHAR(50),
         timestamp NUMERIC(10, 2)
      )
    
    INSERT INTO #table1
    VALUES      (1,
                 'Mark',
                 '99%',
                 9.00),
                (1,
                 'Mark',
                 '75%',
                 9.30),
                (1,
                 'Mark',
                 '60%',
                 10.00),
                (1,
                 'Mark',
                 '85%',
                 10.30),
                (2,
                 'John',
                 '50%',
                 9.00),
                (2,
                 'John',
                 '30%',
                 9.30),
                (2,
                 'John',
                 '65%',
                 10.00),
                (2,
                 'John',
                 '79%',
                 10.30)
    
    DECLARE @columns NVARCHAR(MAX),
            @sql     NVARCHAR(MAX);
    
    SET @columns = N'';
    
    SELECT @columns += N', p.' + QUOTENAME(timestamp)
    FROM   (SELECT DISTINCT p.timestamp
            FROM   #table1 AS p) AS x;
    
    SET @sql = N'
    select *from (SELECT *
    FROM
    (
      SELECT * FROM #table1
    ) AS j
    PIVOT
    (
      MAX(VALUE) FOR TIMESTAMP IN ('
               + STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '')
               + ')
    ) AS p)tb
    order by tb.sourceid';
    
    EXEC sp_executesql
      @sql;
    
    DROP TABLE #table1 
    


    1. SQLServerの数値関数の概要

    2. 私の基準に合わないユーザーも含め、すべてのユーザーを返す

    3. PostgreSQL COPYパイプ出力をgzipに、次にSTDOUTに

    4. データベースに特殊文字を挿入するにはどうすればよいですか?