2016-12-05 1 views
0

нужна помощь с заказом от после объединениястроки заказа MSSQL упорядочить по возрастанию для всех строк, но последних два ряда

select sno,measurement from measurementTable union all select '' as sno,avg(measurement) as 
measurement from measurementTable union all select '' as sno, 
max(measurement)-min(measurement) from measurementTable; 

Мне нужно, чтобы показать средний на день DataGrid, но порядок всех остальных строк таблицы MSSQL Server в порядке возрастания SNO Я пытался использовать порядок, прежде чем все объединения и получил ошибки

select sno,measurement from measurementTable order by sno asc union all select '' as sno, 
avg(measurement) as measurement from measurementTable union all select '' as sno, 
max(measurement)-min(measurement) from measurementTable; 

Msg 156, Level 15, State 1, Line 1 
Incorrect syntax near the keyword 'union'. 

возможно использовать порядок, прежде чем союз все?

ответ

0

Добавить Order by в конце запроса он будет применяться ко всему результате

SELECT * 
FROM (SELECT Cast(sno AS VARCHAR(20)) as sno, 
       measurement 
     FROM measurementTable 
     UNION ALL 
     SELECT ''    AS sno, 
       Avg(measurement) AS measurement 
     FROM measurementTable 
     UNION ALL 
     SELECT '' AS sno, 
       Max(measurement) - Min(measurement) 
     FROM measurementTable) A 
ORDER BY CASE WHEN sno = '' THEN 1 ELSE 0 END ASC,sno 

Преобразовать sno в varchar, чтобы избежать неявного преобразования в integer

Примечание: Если вы можете добавить образец данных и ожидаемый результат. Уверенный запрос может быть упрощен с использованием ROLLUP

+0

спасибо за добрый ответ, но я хочу заказать только значения 'sno' для таблиц и сохранить' avg (измерение) 'и' max (измерение) -min (измерение) 'внизу вывода запроса. Он принимает '' как 0 для sno, и он переходит к началу вывода запроса – user2801828

+0

@ user2801828 - проверьте обновленный код –

+0

привет спасибо за ваш ответ, мне нужны эти «0», чтобы быть скрытыми в выходе. Является ли это возможным? – user2801828

-1

просто используйте

order by sno
в конце вашего запроса.

+0

спасибо, можно ли скрыть '0' от вывода sno? – user2801828

+0

тогда вы должны использовать

where sno!=0
chaitu

+0

Я не использую php. есть ли альтернативный способ? благодаря – user2801828

Смежные вопросы