【问题标题】:How to sort particular list in sql如何在sql中对特定列表进行排序
【发布时间】:2012-10-18 05:24:27
【问题描述】:

您好,我正在使用此查询来制作事件列表

SELECT *, CASE
WHEN ((month > 9 OR (month =9 and days >= 22)) AND year <= 2012)then 'list1'
WHEN (year <= 2013) then 'list2' 
WHEN (year > 2013)then 'list3' 
end as sortlist from events order by sortlist, date

现在我想按相同的 sql 对 list3 进行排序,按年份排序。这可能吗?

【问题讨论】:

  • 您能否澄清一下 - 当 case = 'list3' 时,您是否只想按年份订购记录?
  • 是的,我只想按年份再次排序 list3 顺序,并保持其他状态不变。
  • 我想再次按年份排序list3 ....
  • 请参考这个,它可能会有所帮助-stackoverflow.com/questions/10645131/…
  • 既然您是在设备上执行此操作,为什么不在代码中对列表进行排序呢?这样您就可以不断地添加功能、按摩列表、增加每个项目的重量。内置的排序功能超级快,不易出错。如果您只有 1 个列表,那么在 sql 中进行排序是轻而易举的事情,但是当您创建 3 个列表时,在代码中执行此操作可能会更好

标签: sql sqlite sorting


【解决方案1】:

如果您有 SQL SERVER 2005 或更高版本,您可以这样做

SELECT
    *,
    CALC.sortlist
from events as e
    outer apply
    (
        select
                case
                WHEN ((e.month > 9 OR (e.month =9 and e.days >= 22)) AND e.year <= 2012)then 'list1'
                WHEN (e.year <= 2013) then 'list2' 
                WHEN (e.year > 2013)then 'list3' 
            end as sortlist
    ) as CALC
order by
    CALC.sortlist, CALC.date,
    case when CALC.sortlist = 'list3' then e.year else null end

您也可以这样做,但如果您的案例等于“list3”,则不完全按年份排序(我的意思是,如果您要更改 case 中的表达式,您还需要更改 order by

SELECT
    *,
    case
        WHEN ((e.month > 9 OR (e.month =9 and e.days >= 22)) AND e.year <= 2012)then 'list1'
        WHEN (e.year <= 2013) then 'list2' 
        WHEN (e.year > 2013)then 'list3' 
    end as sortlist
from events as e
order by
    sortlist, e.date,
    case when e.year > 2013 then e.year else null end

【讨论】:

  • 如果你希望数据按dateyear排序,你可以写order by sortlist, case when e.year &gt; 2013 then e.year else date end
  • 你有什么样的SQL?
  • 通过java在android(sqlite)中使用查询
  • 好吧,我不知道sqlite,我只能建议尝试像case when e.year &gt; 2013 then e.year else 9999 end asc这样的订单
【解决方案2】:

我得到了解决方案。 为了按顺序,我只是编辑为

 order by sortlist, case when sortlist='list3' then year else null end,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2017-12-14
    • 2015-07-20
    相关资源
    最近更新 更多