SQL语句中CASE WHEN以及如何运用 CAST将两个SQL字段合成一个字段显示(oracle和sqlserver的区别)

 

复制代码
SELECT [Prt_AlarmRecord].[GUID]
      ,[Prt_AlarmRecord].[AlarmGUID]
      ,[Prt_AlarmRecord].[StartTime]
      ,[Prt_AlarmRecord].[EndTime]
      ,CAST([Prt_AlarmRecord].[DurationTime] as decimal(18,1)) AS [DurationTime]
      ,[Prt_AlarmRecord].[AlarmLevel]
      ,[Prt_AlarmRecord].[AlarmType]
      ,[Prt_AlarmRecord].[AlarmCode]
      ,[Prt_AlarmRecord].[PartCode]
      ,t2.[GUID] as Part_GUID
      ,t2.[ParentGUID] as Part_ParentGUID
      ,t2.PartNameFull
      ,[Prt_AlarmRecord].[AlarmDesc]
      ,[Prt_AlarmRecord].[AlarmPosition]
      ,[Prt_AlarmRecord].[Remark]
      ,[Prt_AlarmRecord].[CreateActor]
      ,[Prt_AlarmRecord].[CreateTime]
      ,[Prt_AlarmRecord].[EndEditActor]
      ,[Prt_AlarmRecord].[EndEditTime]
    FROM  [Prt_AlarmRecord] 
    LEFT JOIN
     (SELECT
        child.[GUID],child.[ParentGUID],child.PartCode  AS PartCode,
        CASE WHEN
        parent.[PartName]
        IS NULL
        THEN 
        child.[PartName]
        ELSE
        (CAST(isnull(parent.[PartName],'')  as varchar(100))) +'|'+(CAST(child.[PartName] as varchar(100)))
        END
        AS PartNameFull

    FROM Bmt_Part child  LEFT JOIN Bmt_Part parent on parent.[GUID]=child.[ParentGUID]
    ) as t2
    on [Prt_AlarmRecord].[PartCode]= t2.PartCode 
     WHERE [StartTime] >='2002-01-01 00:00:00' AND [EndTime]<= '2020-05-06 23:59:59'
and [Prt_AlarmRecord].[PartCode] in (select [Prt_AlarmRecord].[PartCode] from [dbo].[Prt_AlarmRecord]  
WHERE  [Prt_AlarmRecord].[PartCode]='1' or [Prt_AlarmRecord].[PartCode]='2' or [Prt_AlarmRecord].[PartCode]='3' )  
ORDER BY PartNameFull ASC , [StartTime] DESC
复制代码

oracle中,如何将两个字段数据合并成一个字段显示,接下来看一下在sql server和pl/sql的区别

sql server中如何合并(用Cast()函数)

复制代码
--1、创建模拟的数据表---
create table GoodsCate(
    Mid int not null,
    Code varchar(10) not null,
    Name varchar(20) not null,
)
--2、添加模拟数据--
insert into GoodsCate(Mid,Code,Name) values(1,'6801','电子仪器')
insert into GoodsCate(Mid,Code,Name) values(2,'6802','激光仪器')
insert into GoodsCate(Mid,Code,Name) values(3,'6803','扫描仪器')
--3、未合并的结果--
select * from GoodsCate
--4、sqlserver中的合并--
select (CAST(Code as varchar(20))+'_'+CAST(Name as varchar(20))) 合并结果集 from GoodsCate
复制代码

那么,在oracle中如何合并数据(用Concat()函数)

复制代码
--1、创建模拟的数据表 ---
create table GoodsCate(
    MID INTEGER not null,
    CODE NVARCHAR2(100) not null,
    NAME NVARCHAR2(100) not null
)
--2 、添加模拟数据 --
insert into GoodsCate(Mid,Code,Name) values(1,'6801','电子仪器')
insert into GoodsCate(Mid,Code,Name) values(2,'6802','激光仪器')
insert into GoodsCate(Mid,Code,Name) values(3,'6803','扫描仪器')
--3 、未合并的结果 --
select * from GoodsCate
--4 、oracle 中的合并--
select (Concat(Concat(CODE,'_'),NAME)) 合并结果集 from GoodsCate
复制代码

 

posted on   sduSRZ  阅读(1134)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示