【发布时间】:2018-07-05 16:12:47
【问题描述】:
所以我有一张这样的桌子:
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 让我头疼! 谢谢。
【问题讨论】:
标签: sql