2016-12-05 26 views
0

需要工會後MSSQL訂單行的次序由ASC的所有行,但最後兩行

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 

轉換的snovarchar避免隱式轉換integer

注:如果你可以添加樣本數據和預期的結果肯定查詢可以簡化使用ROLLUP

+0

感謝您的回覆,但我只想爲表格值定購'sno',並在查詢輸出底部保留'avg(measurement)'和'max(measurement)-min(measurement)'。它需要sno爲0,並且它到達查詢輸出的頂部 – user2801828

+0

@ user2801828 - 檢查更新後的代碼 –

+0

嗨,感謝您的回覆,我需要將這些'0'隱藏在輸出中。可能嗎? – user2801828

-1

只是使用

order by sno
在您的查詢結束。

+0

謝謝,是否有可能隱藏從輸出sno'0'? – user2801828

+0

那麼你應該使用

where sno!=0
chaitu

+0

我不使用PHP。有其他方法嗎?謝謝 – user2801828