sql - 在 Oracle SQL 中结合 CASE WHEN 语句和包含“Column 1 || '_' || Column 2”类型字符串的列
问题描述
我有一个由三列组成的表,它们被称为以下内容:
1) 月 2) Store_Type 3) 城市
我需要将此表扩展为包含五列,下面详细介绍我希望添加的两列。
首先,查询需要创建一个名为 Store_Code 的新列。Store_Code 列的工作是存储一个与它是什么类型的存储相对应的数值。
我认为这将使用以下类型的 CASE WHEN 语句来完成:
SELECT Month,Store_Type,City,
CASE
WHEN Store_Type = 'Corner Shop' THEN '1'
WHEN Store_Type = 'Megastore' THEN '2'
WHEN Store_Type = 'Petrol Station' THEN '3'
....
ELSE '10'
END Store_Code
FROM My_Table
完成后,我需要创建一个名为“Store_Key”的列。Store_Key 列中包含的值需要采用以下形式:
"该行的月份" "该行的商店类型" "与该行关联的城市"_"该行的商店代码"
我想创建此列的最佳方法是使用类似于以下内容的查询:
SELECT (My_Table.Month || '_' || My_Table.Store_Type || '_' || My_Table.City || '_' ||
My_Table.Store_Code)
FROM My_Table
我需要将这两个单独的查询组合成一个查询。我想这可以通过对不同的 SELECT 查询进行子设置来完成,但我对任何替代解决方案持开放态度并表示感谢。
感谢您花时间阅读此问题,非常感谢所有解决方案。
解决方案
在派生表(子查询)中执行case
表达式部分:
SELECT (My_Table2.Month || '_' || My_Table2.Store_Type || '_' || My_Table2.City || '_' ||
My_Table2.Store_Code)
FROM
(
SELECT Month,Store_Type,City,
CASE
WHEN Store_Type = 'Corner Shop' THEN '1'
WHEN Store_Type = 'Megastore' THEN '2'
WHEN Store_Type = 'Petrol Station' THEN '3'
....
ELSE '10'
END Store_Code
FROM My_Table
) My_Table2
推荐阅读
- php - 在 composer-php 安装中似乎不存在包含包
- sql - 使用空格 SQL 模式匹配查找单词
- python - 没有名为 oauth2 的模块 - 从 google.oauth2 导入
- css - 使用 npm 在 SCSS 中设置动态变量
- cookies - UrlFetchApp 未连接到公共 URL
- java - 为什么 Files.move 不能识别 CopyOption?
- python - 如何获得最大可能的精度?(Python - 十进制)
- javascript - 为什么 Chrome 不能在一个紧密的循环中通过 websocket 发送,而 Firefox 可以?
- javascript - 无法让 Javascript 数组“包含”在字符串原型中工作
- prolog - Prolog中N < 4的N-Queen问题变体的解决方案?