2015-09-01 4 views
0

В SQL Server у меня есть одна таблицы (userMessageTbl) с этой структуройвыберите сообщение из двух даты столбца

User UserMessage UserMessageDate AdminMessage AdminMessageDate 

Теперь я хочу выбрать UserMessage и AdminMessageDate из этой таблицы по дате DES.

Для exmple

User UserMessage UserMessageDate AdminMessage AdminMessageDate 

test hi   2015-03-1  thanks  2015-10-4 
test ok   2015-08-2  car   2015-09-1 
test u   2015-10-2  book   2015-10-3 

я хочу получить это:

thanks 
book 
u 
car 
ok 
hi 

спасибо за вашу помощь

+0

пожалуйста, используйте 'AdminMessage UNION UserMessage' – wiretext

+0

вы только эти две колонки – mohan111

ответ

1
; WITH MD AS 
(
    SELECT UserMessage AS [Message], UserMessageDate AS [Date] FROM userMessageTbl 
    UNION ALL 
    SELECT AdminMessage AS [Message], AdminMessageDate AS [Date] FROM userMessageTbl 
) 
SELECT [Message], [Date] FROM 
MD 
ORDER BY [Date] DESC 
1

сделать UNION ALL в производной таблице. Затем закажите результат.

select msg from 
(
select UserMessage as msg, UserMessageDate as msgdate from table 
union all 
select AdminMessage as msg, AdminMessageDate as msgdate from table 
) as dt 
order by msgdate 
0

При использовании Cross Применить, Co связанных подзапросов и Приказ также мы можем достичь этого

Select val from (
    select val,dval from table1 
    CROSS APPLY (values ('UserMessage',UserMessage), 
       ('AdminMessage',AdminMessage))cs(col,val) 
    CROSS APPLY (values ('UserMessageDate',UserMessageDate), 
       ('AdminMessageDate',AdminMessageDate))vs(dcol,dval) )T 
       ORDER BY T.dval Desc 
Смежные вопросы