SQL查询以显示设置的行数';将数据作为列?

SQL查询以显示设置的行数';将数据作为列?,sql,Sql,如果我有一个选择表的前5行的查询,是否有方法操纵SQL将这5行中的值表示为5列 现有查询: SELECT TOP 5 FirstName FROM USER 现有结果 乔恩 账单 吉尔 洛里 瑞克 期望结果 乔恩、比尔、吉尔、洛莉、里克 *注意:*我在这里用SQL Server语法介绍了查询,但我更喜欢一个普遍适用的解决方案。如果您想要不同的列,而不仅仅是所有值的单值列表,请尝试 如果您想要不同的列,而不是所有值的单值列表,请尝试 注意:将ROW_NUMBER()(在SQL Serve

如果我有一个选择表的前5行的查询,是否有方法操纵SQL将这5行中的值表示为5列

现有查询:

SELECT TOP 5 FirstName
FROM USER
现有结果

  • 乔恩
  • 账单
  • 吉尔
  • 洛里
  • 瑞克
期望结果

  • 乔恩、比尔、吉尔、洛莉、里克

*注意:*我在这里用SQL Server语法介绍了查询,但我更喜欢一个普遍适用的解决方案。

如果您想要不同的列,而不仅仅是所有值的单值列表,请尝试

如果您想要不同的列,而不是所有值的单值列表,请尝试

注意:将
ROW_NUMBER()
(在SQL Server中工作)替换为允许您对内部查询中的记录进行编号的任何函数;例如
rownum
等,具体取决于您的SQL版本


注意:将
ROW_NUMBER()
(在SQL Server中工作)替换为允许您对内部查询中的记录进行编号的任何函数;例如
rownum
等,具体取决于您的SQL版本。

。我还根据语法和OP前面的问题为这个
[sql server]
添加了标签。如果不正确,请重新标记。@NullUserException这实际上是一个一般的SQL问题,但我用SQL Server语法来解释,因为这里的大多数人似乎都知道这一点。没关系,这很重要,因为没有标准的方法。。我还根据语法和OP前面的问题为这个
[sql server]
添加了标签。如果不正确,请重新标记。@NullUserException这实际上是一个一般的SQL问题,但我用SQL Server语法来解释,因为这里的大多数人似乎都知道这一点。没关系。这很重要,因为没有标准的方法。回答很好,谢谢,但我更喜欢平台不可知论的答案。@C.Ross Dems的答案不是平台不可知论的。没有这样的答案。谢谢你的信任投票,你是对的!也就是说,在Access 2.0下的我的486上,他们两人都像疯了一样窒息;-)多么致命的应用程序(double smiley)@NullUserException虽然我知道它并不是真正的平台不可知论,但它可以适应其他平台,应该可以在多个数据库上工作。简而言之,我得到了他在我的目标环境中工作的答案。回答很好,谢谢,但我更喜欢平台不可知论的答案。@C.Ross Dems的答案不是平台不可知论的。没有这样的答案。谢谢你的信任投票,你是对的!也就是说,在Access 2.0下的我的486上,他们两人都像疯了一样窒息;-)多么致命的应用程序(double smiley)@NullUserException虽然我知道它并不是真正的平台不可知论,但它可以适应其他平台,应该可以在多个数据库上工作。简而言之,我得到了他在我的目标环境中工作的答案。
SELECT
  MAX(CASE WHEN row_id = 1 THEN FirstName) AS Name1,
  MAX(CASE WHEN row_id = 2 THEN FirstName) AS Name2,
  MAX(CASE WHEN row_id = 3 THEN FirstName) AS Name3,
  MAX(CASE WHEN row_id = 4 THEN FirstName) AS Name4,
  MAX(CASE WHEN row_id = 5 THEN FirstName) AS Name5
FROM
(
  SELECT TOP 5 FirstName, ROW_NUMBER() OVER (ORDER BY xxx) as row_id FROM User ORDER BY xxx
)
  AS source