我有一个StudentMarks带有列的表Name, Maths, Science, English.数据就像
Name, Maths, Science, English
Tilak, 90, 40, 60
Raj, 30, 20, 10
Run Code Online (Sandbox Code Playgroud)
我希望得到如下安排:
Name, Subject, Marks
Tilak, Maths, 90
Tilak, Science, 40
Tilak, English, 60
Run Code Online (Sandbox Code Playgroud)
使用unpivot,我可以正确获取Name,Marks,但无法将源表中的列名称获取到Subject所需结果集中的列.
我怎样才能做到这一点?
我到目前为止已达到以下查询(获取名称,标记)
select Name, Marks from studentmarks
Unpivot
(
Marks for details in (Maths, Science, English)
) as UnPvt
Run Code Online (Sandbox Code Playgroud) 假设我有一个数据库列'grade',如下所示:
|grade|
| 1|
| 2|
| 1|
| 3|
| 4|
| 5|
Run Code Online (Sandbox Code Playgroud)
在SQL中有一个非平凡的方法来生成这样的直方图吗?
|2,1,1,1,1,0|
Run Code Online (Sandbox Code Playgroud)
其中2表示1级出现两次,1表示等级{2..5}出现一次,0表示等级6根本不出现.
我不介意直方图是否每个计数一行.
如果这很重要,数据库是由perl CGI通过unixODBC/FreeTDS访问的SQL Server.
编辑:谢谢你的快速回复!如果我可以确定哪个直方图值属于哪个等级,则不存在不存在的值(如上例中的等级6)是可以的.