数据库中怎么找出一行中前三大的3列?

图片说明

如图,找出table1中每行最大的三列,结果如table2所示,PID1最大,PID2第二大,PID3第三大。

现在有一个方案:

 先把table1转置:
 select ID, ‘P1’as PID, P1 as score  from table1
 union 
 select ID, ‘P2’as PID, P2 as score  from table1
 ......
 然后从转置后结果得到table2.

但是我实际数据中有30多列,难道union30多次吗,总觉得不太好,请问大神们有其他好的方法吗?

DataGridView控件扩展

看这里:https://stackoverflow.com/questions/52652631/find-max-column-name-and-value-for-each-row

针对你这个问题,我专门发了一个帖子,你参考一下,绝对是你的答案,互联网上仅此一文
https://blog.csdn.net/viviliving/article/details/84306373