在ms sql2000中用的case when 查询如果改为oracle该如何写?
select per_no 工号
,sum(case when per_no='01' then qty else 0 end) as per01qty
,sum(case when per_no='02' then qty else 0 end) as per02qty
from person m
group by m.per_no
查询如果改为oracle该如何写?
相关推荐
28、SQL 函数与运算符全解析
本博客全面解析了SQL中的各类函数与运算符,涵盖了数据转换、条件处理、NULL值处理、逻辑与比较运算符、算术运算符及用户自定义函数等内容。通过对比不同数据库系统(如Oracle、IBM DB2 UDB、MS SQL Server)之间的函数差异,帮助开发者更好地掌握SQL在实际开发中的应用技巧,并提供了丰富的示例和流程图,便于理解与实践。
SQL Server参数化查询:安全高效处理IN和LIKE的实战方案
参数化查询是防止SQL注入、提升执行计划复用率的核心机制,其原理在于SQL Server编译期将参数视为类型明确的标量变量,生成可缓存的标准化执行计划。然而T-SQL语法限制导致WHERE IN和LIKE无法直接参数化——前者因IN子句要求编译期确定数量的标量表达式,后者因通配符位置影响索引选择与计划稳定性。技术价值体现在兼顾安全性(杜绝拼接风险)、性能(避免Ad-hoc计划爆炸)与可维护性(强类型校验、统一监控)。典型应用场景包括多选批量查询、前端模糊搜索、运营导出等高并发业务接口。本文聚焦SQL Ser
SQL中WHERE和HAVING的本质区别与实战应用
WHERE和HAVING是SQL聚合查询中两类关键过滤机制,分别作用于行级数据和分组后结果集。其核心差异源于SQL标准定义的执行顺序:WHERE在GROUP BY之前运行,只能使用原始字段;HAVING在分组之后生效,支持COUNT、AVG、STDDEV等聚合函数。这一时序约束不仅决定语法合法性,更直接影响查询性能——WHERE可利用索引大幅减少数据量,而HAVING无法直用索引,易引发全表分组瓶颈。在电商大促统计、用户行为漏斗、IoT异常检测等典型场景中,二者需协同分工:WHERE负责时间范围、状态、非空
SQL为何成为AI时代的底层操作系统语言
SQL 是一种声明式数据操作语言,其核心原理在于通过约束、聚合与连接精确表达业务逻辑,而非执行过程。在 AI 时代,它不再仅是取数工具,而是承担数据认知接口、特征定义 DSL 和向量检索协同层等关键角色,提供确定性、可验证性与强治理能力。相比 Python 或 Spark 的过程式表达,SQL 天然适配 LLM 的自然语言理解边界,成为人机语义共识层;同时支撑实时特征计算、混合检索、图关系建模与半结构化解析等典型 AI 工程场景。本文聚焦 PostgreSQL 与现代数仓中的 CTEs、窗口函数、递归查询及
SQL原生批量生成百万级业务测试数据实战
SQL批量插入是数据库性能优化与测试验证的基础能力,其核心在于理解数据生成的执行范式:从客户端串行提交转向服务端内存计算。递归CTE、generate_series、INSERT SELECT等原生机制,通过消除网络往返和WAL高频刷盘,实现百倍级性能跃升;结合RANDOM()向量化计算、CASE业务规则嵌入与时间/金额分布模拟,可生成具备真实语义的活数据。该技术广泛应用于SQL练手、索引调优、执行计划分析及CI/CD自动化测试等工程场景,是DBA、数据工程师与SQL开发者必须掌握的‘数据工厂’底层能力。


