単一列として単一のレコード(行)を表示
-
23-08-2019 - |
質問
Iは、(複数の行を有する)単一の列としてデータの単一の列を表示する方法を探しています。たとえば、
FieldA FieldB ------- --------- 1 Some Text [row] Header Value [col] ------ ------ FieldA 1 [row1] FieldB SomeText [row2]
SQL Server 2005の?
でこれを行う方法はあります解決
うん、TSQLコマンド、PIVOTがあります。そして、このトピックに関するいくつかの既存のスレッドがあります。しかし、私は1つのぶっきらぼうを見つけることができません。
私のいつもの答えは(おそらく5またはそれらのスレッドの6)が適切な場合はExcelやAccessを使用について考えることである - それはエンドユーザーに価値を提供するために非常に簡単な方法です。しかし、YMMVます。
他のヒント
Declare @tbl Table
(
c1 int,
c2 int,
c3 int
)
Insert into @tbl Values(1,2,3)
Select
cname,
cval
From
(
Select C1,C2,C3 From @tbl
) t
UNPIVOT
(Cval For Cname In
(C1,C2,C3)
)As U
しかし、それは通常、融通の利かないと遅いです。あなたは労働組合を使用することができますが、それはmaintainceの観点から、通常は悪いですが、速いかもしれません(チェックする必要があります)または動的クエリとを使用する労働組合
もう一つの簡単な方法:
SELECT 'FIELDA'、テーブル
から値としてFIELDA
組合
テーブルから値として「フィールド」、フィールドを選択し、
が、ピボットは、あなたが試してみたいものを本当にしている。
のように、T-SQLのPIVOTコマンドを使用します。
あなたは、SQL Serverレポートサービスへのアクセスを持っている場合は、、あなたは代わりに自分の単純なクエリに基づいてレポートを作成して、マトリックス・レポートのコントロールを使用することができます。ドラッグアンドコントロールにあなたのフィールドをドロップし、作業が完了している!
あなたが特定のDBに合わせた具体的な何か、すなわちではない一般的な解決策が、1つを探しているなら、あなたはこのような何かを行うことができます:
select Field1+';'+convert(nvarchar(255), Field2 )+';'+convert(nvarchar(255),Field3 ) from Table
は、あなたがそうでなければ、あなたのorderbyのとGROUPBYので発生する何が起こっているかを知ることはありません(あなたは関係なく、それには何か文字の問題を持っていないないように、あなたが選択を実行する前に、照合を修正することを忘れないでください(255)NVARCHARへの変換を使用します)。