2017-03-22 10 views
0

SQL Serverで単純な転置を行い、1行と複数の列を表示したいと考えています。私はピボットとアンピボットを見ており、このシナリオでは複雑すぎるようです。私は、行を取得するには、単純なSQLクエリを実行しています:SQL Serverで単純な転置

select name 
from sys.databases 
where name like '%trn%' 

サンプルデータ:

prpc_trn 
prpc_trn_arc 
prpc_trn_IntegrationAuditDetails 
prpc_trn_IntegrationAuditDetailsArchive 
prpc_trn_Lumley 
prpc_trn_PerformanceLoggingDetails 
prpc_trn_PerformanceLoggingDetailsArchive 
prpc_trn_prHistory 
prpc_trn_prHistoryArchive 
prpccpmi_trn 
prpcref_trn 
+1

質問を編集し、サンプルデータと希望する結果を提供してください。 –

答えて

0

をあなたの質問の私の理解に基づいて、これはPIVOTによってのみ達成することができます。しかし、列が動的なのでPIVOTを使用するだけでおそらく最良ではありません。

articleに基づいて、私はPIVOTを使用してXMLを使用する方がPIVOTを使用するよりも良い選択肢だと思います。

私はあなたの条件のため、この記事に基づいてクエリを記述しようとした:

declare @cols as nvarchar(max), @query as nvarchar(max); 

set @cols = stuff((select distinct ',' + quotename(c.[name]) 
      from sys.databases c 
      where name like '%trx%' 
      for xml path(''), type).value('.', 'nvarchar(max)') 
      , 1, 1, '') 

set @query = 'select * from (
    select name from sys.databases) x pivot (max(name) for name in (' + @cols + ')) p ' 

execute (@query) 

これは、列名のためのより良い値を使用することによって改善することができます。上記のクエリは、テーブル名自体を列名として使用します。

関連する問題