ISNULL和UPPER与GROUP BY

Big*_*dEO 1 sql oracle group-by isnull

我有一个查询(精简版 - 为了清晰起见,编辑添加SUM项目) -

SELECT STORENBR AS "Store", 
DISPENSER AS "Model",
UPPER(TINTERSERIALNBR) AS "Serial",
SUM (CASE WHEN CLRNTSYS ='CCE' THEN GALLONS ELSE 0 END) AS "2018 CCE gallons",
SUM (CASE WHEN CLRNTSYS ='BAC' THEN GALLONS ELSE 0 END) AS "2018 BAC gallons",
SUM (CASE WHEN CLRNTSYS ='844' THEN GALLONS ELSE 0 END) AS "2018 844 gallons" 
FROM table
GROUP BY STORENBR, DISPENSER, UPPER(TINTERSERIALNBR);
Run Code Online (Sandbox Code Playgroud)

工作得很好.但现在我必须在序列号字段中考虑NULL值.我试过了

SELECT STORENBR AS "Store", 
DISPENSER AS "Model",
ISNULL(UPPER(TINTERSERIALNBR), "N/A") AS "Serial",
SUM (CASE WHEN CLRNTSYS ='CCE' THEN GALLONS ELSE 0 END) AS "2018 CCE gallons",
SUM (CASE WHEN CLRNTSYS ='BAC' THEN GALLONS ELSE 0 END) AS "2018 BAC gallons",
SUM (CASE WHEN CLRNTSYS ='844' THEN GALLONS ELSE 0 END) AS "2018 844 gallons"  
FROM table
GROUP BY STORENBR, DISPENSER, UPPER(TINTERSERIALNBR);
Run Code Online (Sandbox Code Playgroud)

和Oracle SQL Developer告诉我ISNULL不能与GROUP BY一起使用.

我该如何工作?

Gor*_*aca 5

您可以在单个查询中添加整个表达式:

SELECT STORENBR AS "Store", 
       DISPENSER AS "Model",
       NVL(UPPER(TINTERSERIALNBR), "N/A") AS "Serial",
       SUM (CASE WHEN CLRNTSYS ='CCE' THEN GALLONS ELSE 0 END) AS "2018 CCE gallons",
       SUM (CASE WHEN CLRNTSYS ='BAC' THEN GALLONS ELSE 0 END) AS "2018 BAC gallons",
       SUM (CASE WHEN CLRNTSYS ='844' THEN GALLONS ELSE 0 END) AS "2018 844 gallons"  
 FROM table
GROUP BY STORENBR, DISPENSER, NVL(UPPER(TINTERSERIALNBR), "N/A");
Run Code Online (Sandbox Code Playgroud)