2017-01-06 2 views
1

У меня есть такой стол;заказывать разные столбцы в один заказ?

Student_Name1 mark1 Student_Name2 mark2 
-------------- ------ --------------- -------- 
Kevin   77  Peter   78 
Andrew   91  David   17 
Scott   46  Bradley  28 

Как я в состоянии сделать заказ mark1 и mark2 в приведенной выше таблице в порядке убывания, включая все имена и очки все вместе, как показано ниже?

Student_Name mark 
-------------- ------ 
Andrew   91 
Peter   78 
Kevin   77 
Scott   46 
Bradley   28 
David   17 

Я использую MSSQL Server 2008 R2

+3

You У вас есть некоторые рабочие ответы ниже, но реальная проблема - ваша структура таблицы, было бы лучше t o нормализуйте его так, чтобы у вас было одно имя student_name, и вы могли бы добавить другое поле, которое будет использоваться для идентификации пар, например «пара_ид». –

ответ

4

Используйте UNION ALL:

Select Student_Name1 As Student_Name, 
      Mark1   As Mark 
From  YourTable 
Union All 
Select Student_Name2 As Student_Name, 
      Mark2   As Mark 
From  YourTable 
Order By Mark Desc; 
3

Это странная конструкция стола, но вы можете использовать UNION для этой цели, как

select * from (
select Student_Name1 as Student_Name, mark1 as mark from student 
union all 
select Student_Name2 , mark2 from student) xxx 
order by mark desc; 
Смежные вопросы