oracle 如何在parantheses中获取某种值- sql查询相关[重复]

svmlkihl  于 2022-11-22  发布在  Oracle
关注(0)|答案(1)|浏览(106)

此问题在此处已有答案

How can I make Java print quotes, like "Hello"?(11个答案)
4天前关闭。
下面的查询在我的Oracle开发人员中非常有效:

sb.Append("SELECT CASE GROUPING_ID(status, CASE WHEN status IN(2, 4, 5) THEN 1 ELSE 0 END) ");
        sb.Append(" WHEN 0 THEN TO_CHAR(status) WHEN 2 THEN 'SUB-TOTAL' ELSE 'TOTAL' END AS status, ");
1       sb.Append(" COUNT(CASE user_type WHEN 1 THEN 1 END) AS "1" ");
2       sb.Append(" COUNT(CASE user_type WHEN 2 THEN 1 END) AS "2", ");
3       sb.Append(" COUNT(CASE user_type WHEN 3 THEN 1 END) AS "4", ");
4       sb.Append(" COUNT(CASE user_type WHEN 5 THEN 1 END) AS "5", ");
        sb.Append(" COUNT(*) AS total ");
        sb.Append(" FROM(Select STATUS, USER_TYPE FROM TRANSACTIONS tr  join TRANSACTION_STATUS_CODES sc on sc.id = tr.user_type join ");
        sb.Append(" TRANSACTION_USER_TYPES ut on ut.id = tr.user_type ");
        sb.Append(" WHERE Tr.User_Type between 1 and 5 And tr.status != 1 AND Tr.Update_Date BETWEEN     TO_DATE('2022-01-01 00:00:00', 'yyyy-mm-dd HH24:MI:SS')     AND TO_DATE('2022-11-13 23:59:59', 'yyyy-mm-dd HH24:MI:SS')) ");
        sb.Append(" GROUP BY CUBE(status, CASE WHEN status IN(2, 4, 5) THEN 1 ELSE 0 END) ");
        sb.Append(" HAVING GROUPING_ID(status, CASE WHEN status IN (2, 4, 5) THEN 1 ELSE 0 END) IN(0, 3) ");
        sb.Append(" OR(GROUPING_ID(status, CASE WHEN status IN(2, 4, 5) THEN 1 ELSE 0 END) = 2 ");
        sb.Append("   AND CASE WHEN status IN(2, 4, 5) THEN 1 ELSE 0 END = 1) " );

在我从1-〉4标记的行中,我有一个错误,因为我不能在parantheses中使用parantheses。我想要的是能够真正把“1”,“2”放进我的stringbuilder中,我怎么能做到呢?
感谢

rjjhvcjd

rjjhvcjd1#

正如前面问题答案的注解中提到的,转义字符串文字内的双引号。

sb.Append(" COUNT(CASE user_type WHEN 1 THEN 1 END) AS \"1\", ");
sb.Append(" COUNT(CASE user_type WHEN 2 THEN 1 END) AS \"2\", ");
sb.Append(" COUNT(CASE user_type WHEN 3 THEN 1 END) AS \"4\", ");
sb.Append(" COUNT(CASE user_type WHEN 5 THEN 1 END) AS \"5\", ");

或使用不带引号的标识符:

sb.Append(" COUNT(CASE user_type WHEN 1 THEN 1 END) AS type1, ");
sb.Append(" COUNT(CASE user_type WHEN 2 THEN 1 END) AS type2, ");
sb.Append(" COUNT(CASE user_type WHEN 3 THEN 1 END) AS type4, ");
sb.Append(" COUNT(CASE user_type WHEN 5 THEN 1 END) AS type5, ");

相关问题