首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >oracle - case语句和group

oracle - case语句和group
EN

Stack Overflow用户
提问于 2016-04-18 15:27:56
回答 2查看 6.9K关注 0票数 2

嗨-我需要你的帮助,下面的查询。我正在尝试运行下面的查询以按组排序,但我得到了以下错误:

ORA-00904:“SALES_ID_CO”:无效标识符

你能帮个忙吗?非常感谢。

代码语言:javascript
运行
AI代码解释
复制
Select
count(1),
sales_date,
CASE 
WHEN sales_id like '1%'
THEN substr(sales_id,2,6)
WHEN sales_id  like '3%'
THEN substr(sales_id ,2,6)
WHEN sales_id  like '4%'
THEN substr(sales_id ,2,6)
WHEN sales_id  like '5%'
THEN substr(sales_id ,2,6)
WHEN sales_id  like '9%'
THEN substr(sales_id ,1,6)
WHEN sales_id  like '70%' OR sales_id  like '90%' OR sales_id  like '31%'
THEN substr(sales_id ,2,6)
END AS SALES_ID_CO,

case
WHEN sales_branch like '10%' AND sales_code<> '678 '
THEN substr(sales_branch,2,6)
WHEN sales_branch like '200%' AND sales_code<> '678 '
THEN substr(sales_branch,2,6)
WHEN sales_branch like '300%' AND sales_code<> '678 '
THEN substr(sales_branch,2,6)
WHEN sales_branch like '456%' AND sales_code<> '678 '
THEN substr(sales_branch,2,6)
END AS SALES_BRANCH

from tbl_sales_cde

where sales_country IN (USA,ASIA,EU) 
group by SALES_ID_CO, SALES_BRANCH,SALES_DATE
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-18 15:42:12

Oracle不支持group by子句中的列别名。使用子查询:

代码语言:javascript
运行
AI代码解释
复制
SELECT SALES_ID_CO, SALES_BRANCH,SALES_DATE, COUNT(*)
FROM (Select sales_date,
             (CASE  WHEN sales_id like '1%'
                    THEN substr(sales_id,2,6)
                    WHEN sales_id  like '3%'
                    THEN substr(sales_id ,2,6)
                    WHEN sales_id  like '4%'
                    THEN substr(sales_id ,2,6)
                    WHEN sales_id  like '5%'
                    THEN substr(sales_id ,2,6)
                    WHEN sales_id  like '9%'
                    THEN substr(sales_id ,1,6)
                    WHEN sales_id  like '70%' OR sales_id  like '90%' OR sales_id  like '31%'
               END) AS SALES_ID_CO,
              (case WHEN sales_branchlike '10%' AND sales_code<> '678 '
                    THEN substr(sales_branch,2,6)
                    WHEN sales_branchlike '200%' AND sales_code<> '678 '
                    THEN substr(sales_branch,2,6)
                    WHEN sales_branchlike '300%' AND sales_code<> '678 '
                    THEN substr(sales_branch,2,6)
                    WHEN sales_branchlike '456%' AND sales_code<> '678 '
                    THEN substr(sales_branch,2,6)
                END) AS SALES_BRANCH
       from tbl_sales_cde
       where sales_country IN ('USA', 'ASIA', 'EU') 
      ) s
group by SALES_ID_CO, SALES_BRANCH,SALES_DATE;

注意:where子句中也有卷曲单引号,但这可能是复制问题。

票数 3
EN

Stack Overflow用户

发布于 2016-04-18 15:41:02

代码语言:javascript
运行
AI代码解释
复制
SELECT SALES_ID_CO,
       SALES_BRANCH,
       SALES_DATE,
       count(1)
FROM   (
  SELECT sales_date,
         CASE
         WHEN sales_id  LIKE '70%'
         OR   sales_id  LIKE '90%'
         OR   sales_id  LIKE '31%'
         OR   SUBSTR( sales_id, 1, 1 ) IN ( '1', '3', '4', '5' )
           THEN substr(sales_id,2,6)
         WHEN sales_id  LIKE '9%'
           THEN substr(sales_id ,1,6)
         END AS SALES_ID_CO,
         CASE
         WHEN sales_code<> '678 '
         AND  (
              sales_branch LIKE '10%'
           OR sales_branch LIKE '200%'
           OR sales_branch LIKE '300%'
           OR sales_branch LIKE '456%'
         )
           THEN substr(sales_branch,2,6)
         END AS SALES_BRANCH
  from   tbl_sales_cde
  where  sales_country IN ('USA','ASIA','EU')
)
group by SALES_ID_CO, SALES_BRANCH,SALES_DATE
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36705988

复制
相关文章
Mysql的 If和 Case语句
比如在上例子中,我们存储了一些不希望暴露性别的用户,存储的值为3.此时想要查询可以:
呼延十
2019/06/26
3.5K0
Mysql的 If和 Case语句
MySQL GROUP BY 语句
接下来我们使用 GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录:
用户4988085
2021/07/25
4.5K0
(33)if、case语句
②[ 条件判断式 ]就是使用test命令判断,所以中括号和条件判断式之间必须有空格
生信real
2020/09/10
1.2K0
(7)case语句[通俗易懂]
总结:把安装php的各种版本一个文件,文件里面是函数安装php各种版本的函数,然后在入口文件使用. /server/scripts/php.sh加载这个文件,在定义函数调用文件中的函数功能即可
全栈程序员站长
2022/09/20
9760
(7)case语句[通俗易懂]
oracle中case when_oracle case when 嵌套
这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。 还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
全栈程序员站长
2022/11/14
9490
SystemVerilog-决策语句-case语句
经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。
碎碎思
2022/11/14
3.7K0
SystemVerilog-决策语句-case语句
CASE语句与CASE表达式
case语句与case表达式是plsql流程控制的重要组成部分,尽管其使用方法较为简单,但容易混淆。本文将描述case语句与case表达式并给出演示以便于更好理解两者的异同及使用时的注意事项。 一、简单case语句
Leshami
2018/08/14
1.4K0
MySQL GROUP BY 语句
接下来我们使用 GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录:
iOS Magician
2023/05/12
1.1K0
Java switch case语句
swith 语句主要用于判断一个变量与一系列值中某个值是否相等,每一个值称为一个分支。基本格式如下:
算法与编程之美
2022/10/28
1.4K0
Java switch case语句
Shell脚本应用(for、while循环语句和case分支语句)
1、for:读取不同的变量值,逐个执行同一组命令,直到取值完毕退出,变量值以空格分隔 语法: for 变量值 in 取值列表 do 命令序列 done 2、while:重复测试某个条件,成立则执行,进入下一个循环,直到条件不成立为止 语法: while 【条件测试 】 do 命令 添加更改测试条件语句 done 例:批量添加用户(stu1~stu20) prefix=“stu” i=1 while 【 $i -le 20 】 do user
L宝宝聊IT
2018/06/20
1.1K0
java switch case 语句
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
taoli
2022/09/30
1.5K0
java switch case 语句
SAP HANA SQL GROUP BY / ORDER BY / OVER / CASE
简单举例 select name, score1, score2, nextscore1, case when ((nextscore1 IS NOT NULL) AND (score1 - nextscore1 < 0.1)) then score2 else score1 end score_sort1, case when (nextscore1 IS NOT NULL) AND (score1
matinal
2020/11/27
1.2K0
SQL之GROUP BY 语句
合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。 GROUP BY 语句 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。 SQL GROUP BY 语法 SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name SQL GROUP BY 实例 我们拥有下面这个 "Orders"
互联网金融打杂
2018/04/03
1.1K0
JavaScript switch case语句详解
switch 语句专门用来设计多分支条件结构。与 else/if 多分支结构相比,switch 结构更简洁,执行效率更高。 语法格式
用户3519280
2023/07/07
4970
JavaScript switch case语句详解
Case When ELSE END语句
一、简介、Case  When   ELSE   END共有两种用法:  说实话,这种就是数据库版的switch语句,但是只是形式上很像,实际上还是有差别的!!! Create Table Test6
郑小超.
2018/01/26
2.4K0
SQL中GROUP BY语句介绍
本文主要介绍 SQL(Structured Query Language)中 GROUP BY 语句的相关知识,同时通过用法示例介绍 GROUP BY 语句的常见用法。
全栈程序员站长
2022/09/01
1K0
带case操作的update语句_多个case when嵌套
1、场景:由于多次循环执行数据库操作是非常耗费性能的。因此,我们需要尽可能一条UPDATE语句更新多条数据。
全栈程序员站长
2022/10/04
2.7K0
Shell脚本(for、while和case语句的应用示例)
一、for循环语句 1、根据姓名列表批量添加用户 步骤:首先创建一个姓名列表 vim /root/users.txt 然后创建脚本vim uaddfor.sh批量添加用户 授权并执行后查看用户是否已
L宝宝聊IT
2018/06/20
2.5K0
流程控制-case语句
在生产环境中,我们总会遇到一个问题需要根据不同的状况来执行不同的预案,那么我们要处理这样的问题就要首先根据可能出现的情况写出对应预案,根据出现的情况来加载不同的预案。
星哥玩云
2022/09/08
6470
order by case when执行优先级_sql case语句
select * from table where 条件1 AND 条件2 OR 条件3
全栈程序员站长
2022/10/02
1.4K0

相似问题

CASE语句和group by

17

SQL Case语句和Group

10

Group By with Case语句

110

group by + case语句

452

Group case语句group by子句

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文