首页 > 解决方案 > 如何在 Oracle 选择语句中声明变量

问题描述

我有这个 Oracle SQL 请求:

SELECT col1,
       col2,
       DECODE(
                 SUM(CASE WHEN col3='A' AND col4='+' THEN col5 ELSE 0 END),
                 NULL,
                 0,
                 SUM(CASE WHEN col3='A' AND col4='+' THEN col5 ELSE 0 END)
             )
FROM mytable
group by col1, col2;

我在问是否有办法声明一种变量并有这样的东西:

SELECT col1,
       col2,
       DECODE(
                 myVariable,
                 NULL,
                 0,
                 myVariable
             )
FROM mytable
group by col1, col2;

标签: sqloracle

解决方案


不,但你可以做一个子查询:

SELECT col1,
       col2,
       DECODE(
                 SUM(myColumn),
                 NULL,
                 0,
                 SUM(myColumn)
             )
FROM (
    SELECT 
        col1,
        col2,
        CASE WHEN col3='A' AND col4='+' THEN col5 ELSE 0 END myColumn   
        FROM mytable
     ) a
group by col1, col2;

推荐阅读