从union语句中删除默认顺序

yas*_*pal 4 sql sql-server sql-order-by sql-server-2008

我想显示这样的数据:

Column1        Column2
-----------------------
TotalAvg         60%

A1               50%

B1               70%

Z1               60%
Run Code Online (Sandbox Code Playgroud)

我的sql脚本是这样的:

select 'Total Avg' as Column1,'60%' as Column2

union

select Column1,Column2 from tblAvg
Run Code Online (Sandbox Code Playgroud)

我得到的结果是这样的:

Column1        Column2
------------------------

A1               50%

B1               70%

TotalAvg         60%

Z1               60%
Run Code Online (Sandbox Code Playgroud)

问题:我想删除默认排序,并希望按照我们正在进行联合表的顺序得到结果.

And*_*mar 8

您可以添加指定结果顺序的列:

select 'Total Avg' as Column1,'60%' as Column2, 1 as OrderCol
union
select Column1,Column2, 2 from tblAvg
order by OrderCol
Run Code Online (Sandbox Code Playgroud)

如果没有order by,数据库可以按任何顺序自由返回行.


Mat*_*lie 1

SELECT
  *
FROM
(
  select 0 as pos, 'Total Avg' as Column1, '60%' as Column2
  union
  select 1 as pos,                Column1,          Column2 from tblAvg 
)
  AS data
ORDER BY
  pos, column1, column2
Run Code Online (Sandbox Code Playgroud)