各位大大好
最近小弟在做一個篩選頁面的 ComboBox 選單
其中一個 ComboBox 我希望可以除了選擇資料表中的欄位資料以外,還能自己額外加入選項
預期結果如下範例:
我的 SQL Code 如下:
select [Name]
from [DB].[dbo].[my_table]
Union
Select '---ALL---'
Union
Select '---不選擇---'
Order by
    case when [EnName]='---ALL---' then 0
         when [EnName]='---不選---' then 2
         else 1
    end
不過這樣寫法會報錯:
「如果陳述式中包含 UNION、INTERSECT 或 EXCEPT 運算子,則選取清單中必須有 ORDER BY 項目。」
有點不太知道要怎麼修正 SQL 的寫法,希望版上大大能給予指點。
感恩感恩~
參考看看合不合用...

謝謝
這樣簡潔很多
我把這結合 一級屠豬士 大大的方法
就可以簡潔地寫出我要的結果了
最後結果參考:
WITH [select_index]
AS (
	SELECT [Name], 1 as [ord]
	FROM [DB].[dbo].[my_table]
	UNION 
	SELECT '--- ALL ---' as [EnName], 0 as [ord]
	UNION
	SELECT '--- None ---' as [EnName], 2 as [ord]
	)
select [Name]
FROM [select_index]
ORDER BY [ord] ASC
commit
	DECLARE @TmpTable TABLE ( Name varchar(20) )
	INSERT INTO @TmpTable
	SELECT '王小明' UNION
	SELECT '葉大雄' UNION
	SELECT '多拉A夢'
	SELECT '---ALL---' AS 'Name'
	UNION
	SELECT [Name]
	FROM @TmpTable
create table t1104 (
  id int
, n text
);
insert into t1104 values
(1, '王小明'),(2,'葉大雄'),(3,'多拉A夢');
with t1(n) as (
select n
  from t1104
 order by id
), t2(n, ordertag) as (
select '---ALL---', 0
union all
select n, 1
  from t1
union all
select '---不選擇---', 2
)
select n
  from t2
 order by ordertag;
 
      n
--------------
 ---ALL---
 王小明
 葉大雄
 多拉A夢
 ---不選擇---
(5 rows)
CREATE TABLE [dbo].[my_table] (
  [Name] nvarchar(20));
INSERT INTO my_table ([NAME])
  VALUES (N'王小明'),
  (N'葉大雄'),
  -- 額外加入
  (N'葉大雄'),
  (N'多拉A夢');
SELECT [NO],[Name]
FROM (
SELECT [Name],RoW_NumBer() OVER (ORDER BY [Name]) AS [NO]
FROM [my_table]
GROUP BY [Name]
UNION
SELECT  N'---ALL---' AS [Name] , 0 AS [NO]
FROM [my_table]
UNION
SELECT N'---不選擇---' AS [Name], COUNT(DISTINCT[Name]) + 1 AS NO
FROM [my_table]
) AS M
ORDER BY NO