为何写这个话题?因为项目中出现过几次有开发者copy之前的release脚本,没注意到其中的set option的影响,最终造成release...
最近遇到一个关于全局变量 @@ROWCOUNT 的值意外变化的问题,代码逻辑是根据不同条件执行不同的 SELECT 语句,然后记录返回行数,大致代码如下: DECLARE @type VARCHAR(20) = 'A' IF @type = 'A' BEGIN SELECT...
不同的SQL引擎在一定程度上支持SQL标准之外,还有一些自己的特有语法,一般称为SQL方言,本文主要记录我觉得比较有用的“冷门”SQL Ser...
背景 写T-SQL的人经常会看到通过如下方式进行字符串拼接或求和: DECLARE @x_str VARCHAR(100) = '', @x_sum INT = 0; -- 字符串拼接 SELECT @x_str = @x_str + col_str FROM Table_x; PRINT @x_str; -- 数值求和 SELECT @x_sum = @x_sum + col_int FROM Table_x;...
需求 以上数据样例,需要转为: 实际业务数据可能不止以上两列,而且数据量比较大,实现时要考虑性能。 本文用SQL实现。 思路 看上去是简单的字符串拆分...
概述 数仓中经常会有一张日历维表,里面预存了很多日期截取和计算相关的字段,便于与事实表关联之后进行各类基于日期相关的分析。 现假定已有日历维表字...
需求 项目中偶尔会有造数据进行测试的情况,根据常见的数据特征,我这里假设数据某表Table_X含4个字段,每个字段的要求如下,需要造出5000...
熟悉SQL的开发者都知道Full Join(同Full Outer Join)是左右两个表的记录都取,但若多个表之间Full Join,较容易出现意料之外的...
今天介绍4种列转行(又称宽表转长表、逆透视等)写法。 数据准备 CREATE TABLE Sales([Year] INT,Q1 INT,Q2 INT,Q3 INT,Q4 INT); GO INSERT INTO Sales([Year],Q1,Q2,Q3,Q4) VALUES (2017,12,123,324,123) ,(2018,13,455,324,878) ,(2019,29,786,473,633); SQL写法 UNION 最传统最通用写法 SELECT [Year],'Q1' AS [Quarter],Q1 AS Amount FROM Sales UNION ALL...
做BI或数据分析时,经常会遇到各类格式转换,这里将最近遇到的一个例子记录一下,分享几种SQL写法。 需求 千言万语抵不上一张图: 数据准备 CREATE TABLE dbo.CategoryConfig(Category VARCHAR(20),[Level]...
今天无意中发现SQL Server一个疑似Bug的特性,特此记录。 由于对表的DML操作无论有无数据被影响,Trigger都会被执行,所以为提升...
字符串拆分函数 刚工作那会写了一篇关于字符串拆分的文章,那时仅仅是考虑实现就可以了,没考虑性能、简洁等因素,现总结一下常用方法以及优劣。 为了考...
经常会有报表需要动态查询MTD和YTD汇总。这里解释一下含义: MTD(Month To Date):从月初到当前日期 YTD(Year To Date):...
SQL语句: SELECT TOP (3) a.orderid,b.companyname,c.firstname FROM Sales.MyOrders a INNER JOIN Sales.Customers b ON b.custid = a.custid INNER JOIN HR.Employees c ON a.empid = c.empid 结果: For XML Raw sql SELECT TOP(3) a.orderid,b.companyname,c.firstname FROM Sales.MyOrders a INNER JOIN Sales.Customers b ON b.custid = a.custid INNER JOIN HR.Employees c ON a.empid = c.empid FOR XML RAW 结果 说明 每一条记录...
-- 四舍五入,在小数点后1位舍入 SELECT ROUND(54.565,1) -- 54.600 -- 四舍五入,取整 SELECT ROUND(54.565,0) -- 55.000 -- 四舍五入,在小数点前1位舍入 SELECT ROUND(55.565,-1) -- 60.000 -- 向上取整 SELECT CEILING(34.634) -- 35 -- 向下取整 SELECT FLOOR(34.634) -- 34 -- 小...