1

在 SQL Server 2005 中,我有一个表说 tbl_Info。我有一栏说信息。

值如下

名称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

您想要旋转表格。但是,通常您至少需要两列(一列用于键,一列用于值),并且您通常还需要提前知道您期望结果中的哪些列。

于 2009-06-06T14:43:03.043 回答