2017-08-29 64 views
1

我想按升序排列一列 - 請選擇 - 作爲第一選擇。 有沒有辦法改變我的代碼來允許這個? 排序與 - 請選擇 - ID在上面請選擇選項作爲第一個選擇

SELECT DISTINCT 
    firmNetworkID, 
    name 
FROM dbo.tbl_firmNetwork 
UNION 
    SELECT '0', '--Please Select--' 
ORDER BY firmNetworkID 

按名稱排序

SELECT DISTINCT 
    firmNetworkID, 
    name 
FROM dbo.tbl_firmNetwork 
UNION 
    SELECT '0', '--Please Select--' 
ORDER BY [name] ASC 

感謝

+0

' - 請選擇 - '在下拉菜單中?您也可以用'?'來代替在下一行中,用戶可以輸入所需的列名稱。 –

+0

嗨@SwastikRajGhosh你能解釋一下你的意思嗎?這聽起來對於動態查詢非常有用 – PeterH

+0

它可以使用腳本實現。實施腳本還是隻需要SQL? –

回答

3
SELECT DISTINCT 
    firmNetworkID, 
    name, 
    1 P 
FROM dbo.tbl_firmNetwork 
UNION 
    SELECT '0', '--Please Select--', 0 
ORDER BY P, [name] ASC 
+0

實際上,不需要額外的P-column,而是在ORDER BY中使用CASE(下面的答案)。 – SAS

0

您可以只選添加一個額外的列。在選擇聯盟後,你可以放在那裏的東西,將百達是第一位的

SELECT DISTINCT 
firmNetworkID, 
name as SortOrder, 
name 
FROM dbo.tbl_firmNetwork 

UNION 

SELECT '0','___', '--Please Select--' 
ORDER BY SortOrder ASC 
0

其實,沒有必要額外列。只需在訂單中使用CASE:

SELECT firmNetworkID, 
    name 
FROM 
(
    SELECT DISTINCT 
     firmNetworkID, 
     name 
    FROM dbo.tbl_firmNetwork 
    UNION ALL 
     SELECT '0', '--Please Select--' 
    ORDER BY [name] ASC 
) AS i 
ORDER BY CASE WHEN i.name='--Please Select--' THEN 1 ELSE 2 END, i.name 
相關問題