如何使用case语句对子选择的结果进行排序

时间:2016-06-15 16:01:26

标签: sql db2 subquery case

我努力让这个SELECT工作没有成功。子选择工作正常,但我也需要用case语句对结果进行排序,我不知道是否可以这样做。

SELECT * 
FROM (SELECT DISTINCT TYPE, MAX(DATE) FROM  TABLE1 WHERE USER = '61616161N' GROUP BY TYPE 
ORDER BY MAX(DATE) DESC, TYPE)
GROUP BY STATUS
ORDER BY
CASE 
WHEN STATUS = 'REC' THEN 1 
WHEN STATUS  = 'LEI' THEN 2 
END

我不知道我是否足够具体,如果我能在一个像这样的选择中做到这样会很好...如果可以这样做也可以解决方法。

2 个答案:

答案 0 :(得分:1)

您不从内部SELECT返回STATUS列,因此您无法在GROUP BY或ORDER BY子句中使用它。 使内部查询返回STATUS列是解决方案。

答案 1 :(得分:0)

不确定你想要什么,但下面会运行 - 这是你想要的吗?

SELECT ..., (variables from other tables)
       newtable.date
  FROM ..., (other database tables)
       newtable
 WHERE ..., (whole bunch of table links)
   AND newtable.key1 = keytable.key1
   AND (newtable.key2 = keytable.key2 OR newtable.key2 IS NULL)