如何在SQL中查询:
三年级600
您正在寻找一个非枢轴操作。一个简单的方法是使用UNION ALL
:
SELECT Name, Year1 AS YearX, 1 AS position FROM yourTable UNION ALL
SELECT Name, Year2, 2 FROM yourTable UNION ALL
SELECT Name, Year3, 3 FROM yourTable
ORDER BY position;
在SQL Server中,我强烈建议使用APPLY
来取消旋转:
select t.name, v.yearx
from t cross apply
(values (year1, 1), (year2, 2), (year3, 3)
) v(yearx, which);
注意如果要保留原来的列,可以选择第二列which
为什么我推荐这个而不是union all
?当然,写起来更短。
更重要的是,它只引用原始表一次,因此表只被扫描一次。这是表上的一个边际性能增益。如果"表格"是";真的是一个视图或CTE