表:
contig_21128 bcsZ A1
contig_3712 bcsZ A1
contig_38480 bcsZ A2
contig_62779 bcsZ A2
contig_115486 bcsZ A4
contig_14345 bcsZ A4
contig_19362 bcsZ A5
contig_53656 bcsZ A5
contig_100190 bcsZ A6
contig_23343 bcsZ A6
我需要使用状态,已关闭和目标日期对其进行排序。像首先打开的项目然后关闭的东西,如果它是使用target_date打开升序并关闭然后使用closed_date。 我使用这个解码函数将所有打开的第一个打开,然后关闭,但不知道如何在这个条件下添加日期列。
id Status Closed_date target_date
1 Open 03/20/2018
2 Closed 03/14/2018
3 closed 03/12/2018
4 Open 04/20/2018
答案 0 :(得分:1)
你可以这样做:
order by status desc, target_date, closed_date
或
order by status desc, coalesce(target_date, closed_date)
这使用" open"并且"关闭"具有特定的顺序,并且日期值是针对一个或另一个。更明确的方法是:
order by (case when status = 'open' then 1 else 2 end),
coalesce(target_date, closed_date)
或者,更明确的方法:
order by (case when status = 'open' then 1 else 2 end),
(case when status = 'open' then target_date end),
(case when status = 'closed' then closed_date end)
我认为前两种方法中的一种在意图上足够明确。