2016-10-20 7 views
1

SQL Squeryを作成して、有効なSQLサブクエリを渡し、結果セットWITH HEADERSを返す必要があります。SQLクエリの一部としてフィールド名を返す

どういうわけか私は結果セットを調べ、フィールド名を取得し、元のデータで "連合"の一部としてそれらを戻し、次に結果をエクスポートのために渡す必要があります。

私の試み以下:私はサブクエリを "A"と呼んでいます。データセットを返すので、フィールド名を問い合わせる必要があります。 ?通常、おそらく?

select A.fields[0].name, A.fields[1].name, A.fields[2].name from 
(

Select 'xxx1' as [Complaint Mechanism] , 'xxx2' as [Actual Achievements] 
union ALL 
Select 'xxx3' as [Complaint Mechanism] , 'xxx4' as [Actual Achievements] 
union ALL 
Select 'xxx5' as [Complaint Mechanism] , 'xxx6' as [Actual Achievements] ) as A 

任意のポインタは、(...多分私はちょうど明らかに行方不明です)いただければ幸いです

ResultSetが、以下の表のようになります。あなたは、静的な数を持っている場合は

F1      F2 
--------------------- --------------------- 
[Complaint Mechanism] [Actual Achievements] 
xxx1     xxx2 
xxx3     xxx4 
xxx5     xxx6 
+0

あなたが欲しい方法の例を投稿することができます見えるように出力? – CGritton

+0

実行しているSQL Serverのバージョンは何ですか? –

+0

SQL 2012/2014 – Stefan

答えて

1

データをテンポラリテーブルに格納してからtempdb.sys.columnsをクエリしてカラム名を取得すると、データの上にunionというカラム名を付けることができます。動的な列数を使用する場合は、動的SQLを使用してpivotステートメントを作成する必要がありますが、それを把握しておきます。

ここで1つの警告は、お使いのカラム名の下にすべてのデータを文字列に変換する必要があることです。

select 1 a, 2 b 
into #a; 

select [1] as FirstColumn 
     ,[2] as SecondColumn 
from (
    select column_id 
      ,name 
    from tempdb.sys.columns 
    where object_id = object_id('tempdb..#a') 
    ) d 
pivot (max(name) 
     for column_id in([1],[2]) 
     ) pvt 

union all 

select cast(a as nvarchar(100)) 
    ,cast(b as nvarchar(100)) 
from #a; 

クエリ結果:

| FirstColumn | SecondColumn | 
|-------------|--------------| 
|  a  |  b  | 
|  1  |  2  | 
関連する問題