T-SQL

生成连续ID记录行

ID值记录行,即每一个数字一行的集合,有些时候在SQL中可以作为辅助表使用,从而用SQL的集合思维去高效解决问题,而不是用循环。 用自定义函数...

SQL Server返回随机记录

###常见的,不一定是最好的 说到返回随机行,很人一般会想到用GUID来排序,这是网上最常用的解决方案: Select Top 100 * From Sales.SalesOrderDetail Order By NewID() 但是这个方案的性能并...

为什么要刷新视图

1.问题描述 有时候会出现这样的情况:从视图中select 出的数据和直接用创建视图的语句选出的数据有差异。 很多人第一次遇到此情况时,会非常惊讶...

SQL递归查询实战

假设某公司的人员组织结构如下图: 数据库表: CREATE TABLE ORG ( EMPID INT NOT NULL, EMPNAME VARCHAR(128) NOT NULL, MGRID INT NOT NULL ); GO INSERT INTO ORG VALUES(1, 'Jack', 0); INSERT INTO ORG VALUES(2, 'Mary', 1); INSERT INTO ORG VALUES(3, 'Tom', 1); INSERT INTO ORG VALUES(4, 'Ben', 2); INSERT INTO ORG VALUES(5, 'John', 3); INSERT...

奇葩的需求

生成测试数据: CREATE TABLE [dbo].[aa]( [a] [nchar](10) NULL, [b] [nvarchar](50) NULL, [c] [nvarchar](50) NULL ) ON [PRIMARY] GO INSERT INTO aa VALUES ('a','杨静,马丽萍', '美容师,美体师&...

SQL行转列与列转行

先准备点数据: CREATE TABLE Sell ( [Year] INT, [Quarter] NVARCHAR(10), Quantity INT ) GO INSERT INTO Sell SELECT 2006, 'Q1', 20 UNION ALL SELECT 2006, 'Q2', 15 UNION ALL SELECT 2006, 'Q2', 4 UNION ALL SELECT 2006, 'Q3', 12 UNION ALL SELECT 2006, 'Q4', 18 UNION ALL SELECT 2007, 'Q1', 10 UNION ALL SELECT 2007, 'Q2', 10 UNION ALL SELECT 2008, 'Q1', 8 UNION ALL...

关于Cross Join 和 Outer/Cross Apply

先为大家准备点数据: CREATE TABLE TA(Acol INT); GO INSERT INTO TA SELECT 1 UNION ALL SELECT 2; GO CREATE TABLE TB(Bcol1 INT,Bcol2 VARCHAR(10)); GO INSERT INTO TB SELECT -1, 'a' UNION ALL SELECT 1, 'b' UNION ALL SELECT 3, 'c'; GO 1. Cross Join Cross Join,交叉联接,其实就是笛卡尔积...

SQL 递归查询初体验

需求: 有如下一张职员上司表,要求给一个职工名,返回他直接或间接管理的所有职工名,写一个函数实现。 分析: 员工的下属也可能是其他员工的上司,即下...