0

1行のデータを1列(複数行)として表示する方法を探しています。例えば、

FieldA FieldB
------- ---------
1テキスト[行]


ヘッダー値[col]
------ ------
FieldA 1 [row1]
FieldB SomeText [row2]

SQL Server 2005でこれを行う方法はありますか?

4

5 に答える 5

2

ここで説明されているunpivotを使用できます

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

しかし、それは通常柔軟性がなく、遅いです。ユニオンを使用できますが、通常はメンテナンスの点で劣りますが、高速である(チェックする必要がある)か、動的クエリとユニオンを使用する可能性があります

于 2008-12-23T23:08:37.613 に答える
2

はい、TSQLコマンドPIVOTがあります。そして、このトピックにはいくつかの既存のスレッドがあります。しかし、私は手に負えないものを見つけることができません。

私の通常の答え(おそらくこれらのスレッドの5つまたは6つ)は、必要に応じてExcelまたはAccessの使用を検討することです。これは、エンドユーザーに価値を提供するための非常に簡単な方法です。しかし、YMMV。

于 2008-12-23T22:31:31.247 に答える
1

別の簡単な方法:

テーブル
ユニオンからの値として「FieldA」、FieldAを
選択します。テーブルからの値として「FieldB」、FieldBを選択します。

しかし、ピボットは本当にあなたが試したいものです。

于 2008-12-23T22:34:00.897 に答える
1

他のいくつかの回答が示唆しているように、T-SQL PIVOT コマンドを使用してください。

SQL Server Reporting Services にアクセスできる場合は、単純なクエリに基づいてレポートを作成し、マトリックス レポート コントロールを使用することもできます。フィールドをコントロールにドラッグ アンド ドロップするだけで完了です。

于 2008-12-23T22:39:54.600 に答える
-1

特定の何か、つまり一般的な解決策ではなく、特定の DB に合わせたものを探している場合は、次のようにすることができます。

select Field1+';'+convert(nvarchar(255), Field2 )+';'+convert(nvarchar(255),Field3 ) from Table

nvarchar(255) への変換を使用して、どのような文字が含まれていても問題が発生しないようにします。select を実行する前に照合を修正することを忘れないでください (それ以外の場合は、orderby と groupby で何が起こるかわかりません)。

于 2009-01-23T10:09:37.093 に答える