SQLServer中的cross apply和FOR XML PATH】的更多相关文章

参考: FOR XML PATH:http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html cross apply:http://www.cnblogs.com/Leo_wl/archive/2013/04/02/2997012.html 应用: FOR XML PATH,可以在group by 语句中,合并非group字段,例如:查询每个学生对应的课程(多个课程使用逗号隔开) cross apply,可以查询A表的同时…
https://www.2cto.com/database/201304/206330.html…
转至:https://stackoverflow.com/questions/12113699/get-top-n-records-for-each-group-of-grouped-results 通过分组的排序及序号获取条数信息,可以使用到索引,没测试性能,不知道和mssql的cross apply性能差异性为多少,只是能实现相应的效果. #MySQL #please drop objects you've created at the end of the script #or check…
/****** Script for SelectTopNRows command from SSMS ******/ SELECT D_ID,[D_Name] as Name FROM [LFBMP.LDS].[dbo].[LDS.Dictionary] Where '32,33,34,35' like '%'+convert(nvarchar(10),D_ID)+'%' FOR XML PATH SELECT [D_Name]+',' FROM [LFBMP.LDS].[dbo].[LDS.…
由于项目的原因,需要将一些记录分类汇总,但还要列出相关的明细,这样的需求我还是第一次遇到,蛋疼了,还是请求一下度娘吧.搜索一番还是有结果,请看以下例子: create table tb ([id] int,[name] varchar(2))insert into tbselect 1,'aa' union allselect 2,'bb' union allselect 1,'cc' union allselect 3,'dd' union allselect 2,'ee' select *…
create table tb ([id] )) insert into tb ,'aa' union all ,'bb' union all ,'cc' union all ,'dd' union all ,'ee' select * from tb --查询 select id, name=stuff((,,'') from tb t group by id 方法二: CREATE FUNCTION GET_STRING(@ID INT) RETURNS VARCHAR() AS BEGIN…
SQL Server对于XML支持的核心在于XML数据的格式,这种数据类型可以将XML的数据存储于数据库的对象中,比如variables, columns, and parameters.当你用XML数据类型配置这些对象中的一个时,你指定类型的名字就像你在SQLServer 中指定一个类型一样. XML的数据类型确保了你的XML数据被完好的构建保存,同时也符合ISO的标准.在定义一个XML数据类型之前,我们首先要知道它的几种限制,如下: 一个实例的XML列不能包含超过2GB的数据. 一个XML的…
一. 需求是需要把','分割的字符串转为表,便于做关联查询,于是发现可以通过xml转为表,如下: declare @XXX xml set @XXX = ' <v> <aa>12345</aa> <bb>23456</bb> </v> <v> <aa>54321</aa> <bb>65432</bb> </v>' SELECT F.p.value('.', 'va…
昨天在写语句的时候,遇到了一个现象,其实就是使用 Cross Apply做一个拼接字符串的而已.比如 CREATE TABLE GoodsCatalog (ID INT, Name )) CREATE TABLE Goods (ID INT, GoodsCatalogID INT, Name )) INSERT INTO GoodsCatalog ( ID, Name ) ,,'体育用品') INSERT INTO Goods ( ID,GoodsCatalogID, Name ) ,,'苹果'…
SQL Server数据库操作中,在2005以上的版本新增加了一个APPLY表运算符的功能.新增的APPLY表运算符把右表表达式应用到左表表达式中的每一行.它不像JOIN那样先计算那个表表达式都可以,APPLY必选先逻辑地计算左表达式.这种计算输入的逻辑顺序允许吧右表达式关联到左表表达式. APPLY有两种形式,一个是OUTER APPLY,一个是CROSS APPLY,区别在于指定OUTER,意味着结果集中将包含使右表表达式为空的左表表达式中的行,而指定CROSS,则相反,结果集中不包含使右表…