关于oracle的case when then end在子查询报错的问题
SELECT t1.billdate, t3.name, SUM(t2.tot_amt_actual) AS tot_amt_actual,
SUM(t2.qty) AS qty, to_char(SYSDATE, 'YYYYMMDD') AS today
FROM m_retail t1, m_retailitem t2, c_customer t3
WHERE t2.m_retail_id = t1.id
AND t1.c_customer_id = t3.id
AND t1.status = 2
AND t3.name IN (CASE
WHEN (SELECT COUNT(1)
FROM c_customer a
WHERE a.name = '1') <> 0 THEN
(SELECT a.name
FROM c_customer a
WHERE a.name = '浙江')
ELSE
(SELECT a.name
FROM c_customer a)
END)
GROUP BY t1.billdate, t3.name
这个mysql可以直接写,但是在oracle里面写就会报单个子查询返回多行。
我的目的是else后返回所有的行,所以不能加rownum返还单行,要怎么修改语句。使用过wm_concat合并行,合并后查询不出结果的。
曾经也改写成以下格式,还是不行。不晓得问题出在哪里。
SELECT to_char('''' || REPLACE(wm_concat(a.name), ',', ''', ''') || '''')
FROM c_customer a