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

sqlserver 2008 で行を列として取得する

    これを試してください:

    SELECT fromcity
          ,[Vskp]=isnull([Vskp],0)
          ,[Hyd]=isnull([Hyd],0)
          ,[Chennai]=isnull([Chennai],0)
    FROM (  SELECT  fromcity ,tocity,Dist
            FROM DistanceTable
            union
    
            SELECT  tocity,fromcity ,Dist
            FROM DistanceTable
    
         ) AS ET
    PIVOT
    (max(dist) FOR tocity  IN ([Vskp],[Hyd],[Chennai])
    ) AS PT 
      

    SQL フィドル

    アップデート: 以下のように、可変数の都市に対して動的 SQL を使用します:

    DECLARE
        @cols VARCHAR(MAX),
        @IsNullCols VARCHAR(MAX),
        @query VARCHAR(MAX)
    
    
    SELECT
        @cols = STUFF((
                SELECT DISTINCT ', [' + tocity + ']'
                FROM (SELECT  tocity FROM DistanceTable
                        union 
    
                        SELECT  fromcity FROM DistanceTable)a  
    
                FOR XML PATH('')
              ), 1, 2, '');
    print @cols;
    
    SELECT
        @IsNullCols = STUFF((
                SELECT DISTINCT ', ['+tocity+']=IsNull([' + tocity + '],0)'
                FROM (SELECT  tocity FROM DistanceTable
                        union 
    
                        SELECT  fromcity FROM DistanceTable)a 
    
                FOR XML PATH('')
              ), 1, 2, '');
    
    print @IsNullCols;          
    
    set @query = 'SELECT fromcity
          ,'+ @IsNullCols +'
    FROM (
            SELECT  fromcity ,tocity,Dist
            FROM DistanceTable
            union 
    
            SELECT  tocity,fromcity ,Dist
            FROM DistanceTable
    
         ) AS ET
    PIVOT
    (max(dist) FOR tocity  IN ('[email protected]+')
    ) AS PT '
    
    exec(@query)
      

    1. MySQLクエリを作成します(meta_key / meta_valueテーブル)

    2. Heroku PG:書き込みアクセスの回復が取り消されました

    3. Oracle Connect By

    4. このSQLがユニオンを使用した理由すべてがデータを返さなかった