1

SQL Server 2005 には、tbl_Info というテーブルがあります。そこで、Info という列が 1 つあります。

値は次のとおりです。

名前1
年齢1
セックス1
名前2
年齢2
セックス2
.....
.....
.....

行の値はこのように続きます。

私の質問は、行列の転置を行う方法です。

望ましい出力は

名前 年齢 性別

名前1 年齢1 性別1
名前2 年齢2 性別2

……………………
……………………

テーブル変数または一時テーブルを使用できます。

また、アセンブリを使用して解決策を提供しないでください。アセンブリを使用して既にそれを行っているため、SQL Server 2000 でも使用できるソリューションが必要です。

4

2 に答える 2

1

一般的な考え方は、順序を保証するために別の列が必要だということです。これは通常、整数型の主キーになりますが、単純にするために、次のようにします。

CREATE TABLE foo (ord INT, col VARCHAR)

ord0、1、2などとして挿入されたばかりです。

SELECTあなたが欲しいのは:

SELECT a.col AS Name, b.col AS Age, c.col AS Sex
  FROM foo AS a
  JOIN foo AS b ON(b.ord=1+a.ord)
  JOIN foo AS c ON(c.ord=2+a.ord)
  WHERE a.ord%3=0

これは、自分自身を "SQL" と呼んでいるほぼすべてのもので機能します;-)。

たとえば、データが次の場合:

  ord   col
    0  John
    1    23
    2     M
    3  Mary
    4    21
    5     F
    6  Karl
    7    25
    8     M

上記SELECTの結果は次のとおりです。

 Name   Age   Sex
 John    23     M
 Mary    21     F
 Karl    25     M
于 2009-06-06T15:46:15.797 に答える
0

テーブルをピボットしたい。ただし、通常は少なくとも 2 つの列 (キー用に 1 つと値用に 1 つ) が必要であり、通常、結果で期待される列を事前に知る必要もあります。

于 2009-06-06T14:43:03.043 に答える