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

sql中的文本变量按升序排序,首先是拉丁字母,然后是西里尔字母

  •  0
  • psysky  · 技术社区  · 6 年前

    如何按照需要的顺序对数据进行排序,同时考虑到我在组内的排序方式 customer 一、 E。

    select
    customer
    , sku
    , stuff
    , action
    , acnumber
    , year
    from mytable
    

    首先,我按SKU从最低到最高进行排序, 然后acnumber从最低到最高递增, 然后年份从最低到最高,然后对于每组scu+acnumber+年份,我必须对客户变量进行排序,其中第一个拉丁字母按升序递增,然后是西里尔文符号

    我给出了一个这样的例子

    例如,对于2017年以及acnumber 2号和13号sku,客户必须以这种方式订购

    Z
    А
    Б
    В
    

    如何排序? 现在我有一个西里尔文符号

    А
    Б
    В
    Z
    

    考虑到每个小组都必须这样做 scu+acnumber+年份

    i、 订单必须是这样的

        Customer SKU stuff action acnumber year
    1        z  12    20     30        1 2017
    2        z  13    20     30        1 2017
    3        А  13    20     30        1 2017
    4        Б  14    20     30        1 2017
    5        Z  13    20     30        2 2017
    6        А  13    20     30        2 2017
    7        Б  13    20     30        2 2017
    8        В  13    20     30        2 2017
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Gordon Linoff    6 年前

    我想你想要:

    order by acnumber,
             (case when customer like '[a-zA-Z]%' then 1 else 2 end),
             customer