私はしばらくこのことに悩まされていました。このような答えをWebサイトで見つけられませんでした。既存の質問が存在する。 SQL Server 2012のでは、私は、主キーとしてIDを持つテーブルを持っている:私はテーブルの長さや列/カラム名 の量を知らない動的SQLを使用して列名を行として持つテーブルを再フォーマットする
ID col1 col2 col3 ....
--- ---- ----- -----
1 a z k
2 g b p
3 k d a
が、私は得ることができるようにしたいです私は
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'table'
は私に私の列を取得し、私は 私に一時テーブルを作成するために、それを使用しようと試みたことを知っている
ID ColName Value
--- ---- -----
1 col1 a
1 col2 z
1 col3 k
2 col1 g
2 col2 b
2 col3 p
3 col1 k
3 col2 d
3 col3 a
...
:私のような何かを与えるテーブル私の望むフォーマットをテンポラリテーブルに書いてはいますが、テーブルの各行を調べ、各カラム名に対して必要な値を動的に取得して表示する方法がわかりません。私は二重カーソルでこれを達成することができましたが、それは痛みを伴いますが、私はSQLで比較的新しいので、これにどのようにアプローチすればよいか分かりません。どんな助けもありがとう!
編集
ので、非常に多くのLamakありがとうございます!私はさまざまなデータ型を持っていたし、varcharsにそれらをカバーして今私は概念が動作することを示す。しかし、私は4つの一般的なデータ型(varchar、float、int、datetime)を持っていますので、それぞれに4つの値フィールドがあります。その他の3つの空白。私はINFORMATION_SCHEMA.COLUMNSもdata_typesを提供しているので、単純なIF文に基づいて "STUFF"変数のデータ型を変換する構文が何か不思議でした。私は、列名にdata_typesをマッピングしようとしましたが、任意のタイプの条件文を持つとクエリが中断します。誰でも簡単な例を持っている場合、それは素晴らしいことだ:)
編集 実は、私は、各データは、むしろ型に私はちょうどでそれらすべてを行うよりも、4つの変数を作成する必要があると把握することができましたそれらの中の一つ。あなたの助けをありがとう!
ありSO上の百例がありますが、ここでは、[ステップバイステップ偉大]です(http://sqlhints.com/2014/03/18/dynamic -pivot-in-sql-server /)を使用します。あなたは "Dynamic Pivot"を探しています – scsimon
@scsimon百例がありますが、これは "dynamic ** unpivot **" – Lamak