postgres数据库 9.5版本
area pro city
华东 江苏 南京
华东 江苏 南京
华北 辽宁 沈阳
原表数据
SELECT CASE
WHEN KEY2 IS NULL THEN
TRIM(KEY1)
WHEN KEY3 IS NULL THEN
TRIM(KEY1) || '#' || TRIM(KEY2)
ELSE
TRIM(KEY1) || '#' || TRIM(KEY2) || '#' || TRIM(KEY3)
END AS LOCATION
FROM (SELECT T.AREA KEY1, T.PRO KEY2, T.CITY KEY3
FROM biapi.TEST T
GROUP BY T.AREA, ROLLUP(T.PRO, T.CITY)) A;
执行结果
华东#江苏#南京
华东#江苏
华东
华北#辽宁#沈阳
华北#辽宁
华北
进行嵌套查询
SELECT *
FROM (SELECT CASE
WHEN KEY2 IS NULL THEN
TRIM(KEY1)
WHEN KEY3 IS NULL THEN
TRIM(KEY1) || '#' || TRIM(KEY2)
ELSE
TRIM(KEY1) || '#' || TRIM(KEY2) || '#' || TRIM(KEY3)
END AS LOCATION
FROM (SELECT T.AREA KEY1, T.PRO KEY2, T.CITY KEY3
FROM biapi.TEST T
GROUP BY T.AREA, ROLLUP(T.PRO, T.CITY)) A) Z
WHERE LOCATION IN ('华东#江苏', '华北#辽宁');
查不出结果来