代码之家  ›  专栏  ›  技术社区  ›  Russell

SQL Server 2008按条件排序

  •  1
  • Russell  · 技术社区  · 14 年前

    我有一个疑问:

    DECLARE @MyTemp TABLE
    (
      MyField VARCHAR(20)
    )
    
    INSERT INTO @MyTemp VALUES ( 'BBA' )
    INSERT INTO @MyTemp VALUES ( 'ABA' )
    INSERT INTO @MyTemp VALUES ( 'AAA' )
    INSERT INTO @MyTemp VALUES ( 'BAA' )
    
    
    SELECT * FROM @MyTemp
    ORDER BY MyField
    

    我想要的是按字母顺序排序,除了以ba开头的任何东西,我最后想要。

    我尝试过:

    SELECT * FROM @MyTemp
    ORDER BY MyField, CASE MyField LIKE 'BA%' WHEN 1 THEN 1 ELSE 0 END
    

    这不管用。我尝试过IIF,包含了所有没有成功的东西。

    我该怎么做?

    1 回复  |  直到 14 年前
        1
  •  7
  •   Adriaan Stander    14 年前

    改变 ORDER BY

    ORDER BY CASE WHEN MyField LIKE 'BA%' THEN 1 ELSE 0 END, MyField