2017-08-24 13 views
0

SQL Server Management Studioで、結果の各データ列名の隣にプレフィックスとしてソーステーブル名が表示されるクエリ結果を返す方法はありますか?私は手作業で多数の異なるクエリを実行しているだけで、同じ名前の列を持つ複数のテーブルをバインドするクエリです。私はテーブル間の関係が確立されていない非常に大きな、文書化されていないデータベースの内容を知ろうとしています。たとえば、テーブルAにはXという列がありますが、関連テーブルBにはXという名前の列もあります。テーブル間の潜在的な関係を示すこれらの類似点を見つけています。しかし、バインドしようとしているいくつかの大きな表に重複する列名が複数存在する場合、Bとは対照的に表Aから来るX列を調べているかどうかを問合せ結果セットで判別するのは難しいです。私は、ASキーワードを使用し、SELECT句の中で私の希望する列を個別にラベル付けすることができることを知っています。それが私の唯一の頼りになるかもしれません。しかし、私はこのデータベースを勉強しているうちにクエリをより素早く作成したいと思っています。 SQL Serverの結果セットにtable.columnの形式の列ヘッダー(例:A.X、B.Xなど)を明示的に付けることができれば大丈夫です。これで十分です。どのようにしてSQL Server 2014にそのような修飾列見出しを表示させることができますか?SQL Server 2014の完全なテーブルを持つ列名ヘッダーを提供します。クエリ結果

+0

SELECT c.A、c.B、t.A AS [T.A]のような独自のエイリアスを追加することができます。INNER JOINからblah blah ... "AS [new column name]"構文を使用します。手動ではなく、自動ではありません。私はSSMSをあなたに自動的にさせる方法がないことを知っています。 – pmbAustin

+0

エイリアスを使用しています。それは、私はやっている。それでもヘッダー列名として表示されません。 – ShieldOfSalvation

+0

残念なことに、SQL - Serverはこれを実行しません。私が通常行ってきたのは、(a)SSMS GUIまたはシステムビューから列のリストを取得し、(b)正規表現機能を持つテキストエディタを使用して、列が来るテーブルを識別するエイリアスを生成します。 tablea_columnaのようなパターン... –

答えて

0

私はSSMSがあなたが自動化された方法でやりたいことをする方法がないと信じていますが、スマートスクリプトを使ってそうする方法があります。私は、過去に似た何かをする必要があったが、私は次のバリエーションを使用:

select 
    quotename(tab.name) + '.' + QUOTENAME(col.name) + ' AS ' + quotename(tab.name + '.' + col.name) 
from sys.columns col 
inner join sys.tables tab on col.object_id = tab.object_id 
where tab.name = '<enter table name here>' 

はこれが引用され、適切にフォーマットされたすべてのフィールドを、吐き出す、およびエイリアスます。ちょっと微調整すれば、残りのクエリをこのスクリプトに追加できるはずです。

+0

ビルドにもっと時間がかかったり、もっとフォーマルなものがあれば、私はあなたの考えを使用します。しかし、私は実際にデータベースをすばやく調べて、余分なプログラミングや手作業のステップを踏まずにバインドするのに有効な列を判断しようとしています。 – ShieldOfSalvation

関連する問題