2017-08-29 119 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 
相关问题