所以我有一个这样的表:
ID DESCRIPTION AGROUP
-----------------------
1 AN
2 FI
3 DOC 1 DOC
4 DOC 2 DOC
5 CO
6 RI RI
如果AGROUP列不为空,则我想选择该值并按该值分组,否则,请选择Description;在任何情况下均按ID排序。我想要的结果是:
ID RESULT
-----------------------
1 AN
2 FI
3 DOC
5 CO
6 RI
我尝试先创建一个子查询,
SELECT
DISTINCT (NVL(AGROUP, DESCRIPTION)) AS DES
FROM
temp
GROUP BY NVL(AGROUP, DESCRIPTION)
然后添加外部查询:
SELECT
ID,
DES
FROM
(
SELECT DISTINCT (NVL(AGROUP, DESCRIPTION)) AS DES
FROM
temp
GROUP BY NVL(AGROUP, DESCRIPTION)
) T1
JOIN TEMP T2 ON (T1.DES = T2.AGROUP OR T1.DES = T2.DESCRIPTION)
ORDER BY ID
;
但是随后我两次收到DOC:
1 AN
2 FI
3 DOC
4 DOC
5 CO
6 RI
SQL让我大跌眼镜! 谢谢。
答案 0 :(得分:3)
我认为您只想要group by
:
select coalesce(AGROUP, DESCRIPTION) AS DES, min(id) as id
from temp
group by coalesce(AGROUP, DESCRIPTION);
答案 1 :(得分:0)
尝试此代码
SELECT
DISTINCT (DESCRIPTION)) AS DES
FROM
temp
where AGROUP IS NOT NULL
GROUP BY (AGROUP, DESCRIPTION)