如果我有一个选择表的前5行的查询,有没有办法操纵SQL将这五行中的值显示为五列?
现有查询:
SELECT TOP 5 FirstName
FROM USER
现有结果
期望的结果
*注意:*我在这里用SQL Server语法提出了查询,但我更喜欢一个普遍适用的解决方案。
答案 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版本。