SQL Query以列的形式显示行数据的集合数量?

时间:2011-11-29 22:04:02

标签: sql

如果我有一个选择表的前5行的查询,有没有办法操纵SQL将这五行中的值显示为五列?

现有查询:

SELECT TOP 5 FirstName
FROM USER

现有结果

  • 乔恩
  • 比尔
  • 吉尔
  • 洛瑞
  • 瑞克

期望的结果

  • Jon,Bill,Jill,Lori,Rick

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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