oracle将select作为字段查询

在Oracle中,如果你想将一个SELECT语句作为字段的值,你可以使用子查询或者使用WITH子句(也称为公用表表达式CTE)。以下是两种方法的示例:

方法1:使用子查询

语法如下:

sql 复制代码
SELECT
    column1,
    (SELECT COUNT(*) FROM another_table WHERE another_table.column2 = table1.column1) AS count_value
FROM
    table1;
  

实例:

sql 复制代码
SELECT
(SELECT a.companycname
          FROM ggcompany a
         WHERE a.companycode = SUBSTR(mm.companycode, 0, 4)) 二级机构,
       (SELECT a.companycname
          FROM ggcompany a
         WHERE a.companycode = SUBSTR(mm.companycode, 0, 6)) 三级机构,
       (SELECT a.companycname
       
          FROM ggcompany a
         WHERE a.companycode = mm.companycode) 四级机构,
       mm.policyno 保单号
       from gppolicyplandetail mm

方法2:使用WITH子句(CTE)

语法:

sql 复制代码
WITH count_cte AS (
    SELECT column2, COUNT(*) AS count_value
    FROM another_table
    GROUP BY column2
)
SELECT
    t1.column1,
    count_cte.count_value
FROM
    table1 t1
    LEFT JOIN count_cte ON count_cte.column2 = t1.column1;

解释:count_cte 是中间表,命名随意,要是需要多个中间表,可以用逗号连接。

实例:

sql 复制代码
WITH
          w AS (
                    SELECT
                              statdate          ,
                              classname         ,
                              riskname          ,
                              cityname          ,
                              policyno          ,
                              registno          ,
                              claimno           ,
                              damagedate        ,
                              reportdate        ,
                              claimdate         ,
                              underwriteenddate ,
                              endcasedate       ,
                              rgstcncldate      ,
                              canceldate        ,
                              firstestloss      ,
                              unsettledpaidbegin,
                              unsettledpaidend  ,
                              settled           ,
                              sumpaid           ,
                              reportlossfee     ,
                              canceldateloss
                    FROM
                              r_lsts_jsreportlist
                    WHERE
                              statdate = DATE '2022-03-31'
          )     ,
          ff AS (
                    SELECT
                              statdate          ,
                              classname         ,
                              riskname          ,
                              cityname          ,
                              policyno          ,
                              registno          ,
                              claimno           ,
                              damagedate        ,
                              reportdate        ,
                              claimdate         ,
                              underwriteenddate ,
                              endcasedate       ,
                              rgstcncldate      ,
                              canceldate        ,
                              firstestloss      ,
                              unsettledpaidbegin,
                              unsettledpaidend  ,
                              settled           ,
                              sumpaid           ,
                              reportlossfee     ,
                              canceldateloss
                    FROM
                              r_lsts_jsreportlist
                    WHERE
                              statdate = DATE '2024-09-30'
          )
SELECT
          ff.statdate 统计日期,
          ff.classname 险类 ,
          ff.riskname 险种  ,
          ff.cityname 机构  ,
          w.settled
FROM
          ff
          LEFT JOIN w ON ff.riskname = w.riskname AND
          ff.policyno = w.policyno AND
          ff.registno = w.registno AND
          ff.claimno = w.claimno
复制代码
         解释:W和FF都是临时表,中间用逗号隔开,中间结束需要有select ,select前不能有逗号。
相关推荐
逍遥德6 小时前
Sring事务详解之02.如何使用编程式事务?
java·服务器·数据库·后端·sql·spring
笨蛋不要掉眼泪6 小时前
Redis哨兵机制全解析:原理、配置与实战故障转移演示
java·数据库·redis·缓存·bootstrap
Coder_Boy_6 小时前
基于SpringAI的在线考试系统-整体架构优化设计方案
java·数据库·人工智能·spring boot·架构·ddd
fen_fen14 小时前
Oracle建表语句示例
数据库·oracle
砚边数影16 小时前
数据可视化入门:Matplotlib 基础语法与折线图绘制
数据库·信息可视化·matplotlib·数据可视化·kingbase·数据库平替用金仓·金仓数据库
orange_tt16 小时前
Djiango配置Celery
数据库·sqlite
云小逸17 小时前
【nmap源码学习】 Nmap网络扫描工具深度解析:从基础参数到核心扫描逻辑
网络·数据库·学习
肉包_51117 小时前
两个数据库互锁,用全局变量互锁会偶发软件卡死
开发语言·数据库·c++
霖霖总总18 小时前
[小技巧64]深入解析 MySQL InnoDB 的 Checkpoint 机制:原理、类型与调优
数据库·mysql
此刻你18 小时前
常用的 SQL 语句
数据库·sql·oracle