sql server多行数据拼接的实例方法

1.表结构
id type productCode
1 铅笔 0001
2 铅笔 0002
3 铅笔 0003
4 钢笔 0004
5 钢笔 0005
6 钢笔 0004
7 圆珠笔 0007
8 圆珠笔 0008
9 圆珠笔 0007
2.自定义函数fun


代码如下:

GO
/****** Object:  UserDefinedFunction [dbo].[fun]    Script Date: 11/22/2011 16:09:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create function [dbo].[fun](@type nvarchar(10))
returns nvarchar(200)
as
begin
    declare @re nvarchar(200)
    declare @code nvarchar(200)
    set @re=''
    set @code=''
    select @re=@re+productCode+',' from T where type=@type group by productCode
    select @re=left(@re, len(@re)-1)
    return @re
end

3.查询语句
select type,dbo.fun(type) from (select distinct type from T) A
结果:
钢笔   0004,0005
铅笔   0001,0002,0003
圆珠笔   0007,0008

(0)

相关推荐

  • sql server多行数据拼接的实例方法

    1.表结构id type productCode1 铅笔 00012 铅笔 00023 铅笔 00034 钢笔 00045 钢笔 00056 钢笔 00047 圆珠笔 00078 圆珠笔 00089 圆珠笔 00072.自定义函数fun 复制代码 代码如下: GO/****** Object:  UserDefinedFunction [dbo].[fun]    Script Date: 11/22/2011 16:09:45 ******/SET ANSI_NULLS ONGOSET QUO

  • 很有意思的SQL多行数据拼接

    要实现的SQL查询很原始: 要求从第一个表进行查询得到第二个表格式的数据,上网查询之后竟然能写出下面的SQL: 复制代码 代码如下: select * from userino SELECT * FROM( SELECT DISTINCT userpart FROM userino )A OUTER APPLY( SELECT [usernames]= replace(replace(replace((SELECT username as value FROM userino N WHERE u

  • SQL Server解析XML数据的方法详解

    本文实例讲述了SQL Server解析XML数据的方法.分享给大家供大家参考,具体如下: --5.读取XML --下面为多种方法从XML中读取EMAIL DECLARE @x XML SELECT @x = ' <People> <dongsheng> <Info Name="Email">dongsheng@xxyy.com</Info> <Info Name="Phone">678945546</

  • SQL Server如何插入数据示例代码

    目录 前言 1.插入完整的行 1.1.基本的insert语法(语法简单,并不安全) 1.2.更安全的insert语法 2.插入部分行 3.插入检索出的数据 4.从一个表复制到另一个表 5.全部代码 补充知识:SQL SERVER 循环批量插入数据 总结 前言 在进行下面的操作前,先在数据库中新建两张数据表: (以下是创建数据表的代码) create table 学生表01( 姓名 nvarchar(10), 性别 nvarchar(1), 身高 numeric(3,2) ) create tab

  • SQL Server的行级安全性详解

    目录 一.前言 二.描述 三.权限 四.安全说明:侧信道攻击 五.跨功能兼容性 六.示例 一.前言 行级别安全性使您能够使用组成员身份或执行上下文来控制对数据库表中行的访问. 行级别安全性 (RLS) 简化了应用程序中的安全性设计和编码.RLS 可帮助您对数据行访问实施限制.例如,您可以确保工作人员仅访问与其部门相关的数据行.另一个示例是将客户的数据访问限制为仅与其公司相关的数据. 访问限制逻辑位于数据库层中,而不是远离另一个应用程序层中的数据.每次尝试从任何层访问数据时,数据库系统都会应用访问

  • 恢复sql server 2000误删数据的解决办法

    今天不小心把客户那边的数据库中删了一千多条数据,而且之前又没有备份,真的是很郁闷,后来在网上找到一工具,用起来挺方便,让我躲过一劫. 首先来看一下界面: 输入服务器地址,用户名及密码后点Connect,进入到下面的界面: 在这里选择要恢复数据的数据库,选择Use On-line Log(如果你又备份文件的话就不需要用这个工具了,直接用SQL搞定了).然后点Attach,进入下面的界面: 可以看到左边菜单中有很多功能,我们要恢复数据,首先要查看日志,找出我们误操作的那些日志记录,点Browse下的

  • SQL Server数据库删除数据集中重复数据实例讲解

    SQL Server数据库操作中,有时对于表中的结果集,满足一定规则我们则认为是重复数据,而这些重复数据需要删除.如何删除呢?本文我们通过一个例子来加以说明. 例子如下: 如下只要companyName,invoiceNumber,customerNumber三者都相同,我们则认为是重复数据,下面的例子演示了如何删除. declare @InvoiceListMaster table ( ID int identity primary key , companyName Nchar(20), i

  • SQL Server简单实现数据的日报和月报功能

    本文实例讲述了SQL Server简单实现数据的日报和月报功能.分享给大家供大家参考,具体如下: --320, SQL SERVER 日报 --查询2009-01-01当天客户A1,A2,A3的订单数量 SELECT Cust_Name , CONVERT(CHAR(10), Order_Date, 120) Order_Date , SUM(Qty) Qty FROM Orders_Big WHERE 1=1 AND Cust_Name IN ('A1', 'A2', 'A3') AND Or

  • Node.js连接Sql Server 2008及数据层封装详解

    本文实例讲述了Node.js连接Sql Server 2008及数据层封装.分享给大家供大家参考,具体如下: 最近需要学习Node.js,所以很久没写东西了,疯狂的看了很久的书.有关于Node.js的学习知识,可以参考官网教程WWW.NODEJS.ORG,或者书籍<Node.js权威指南>.这里我记录一下Node.js连接Sql Server 2008的步骤. Node.js连接数据库需要特定的模块msnodesql,这个模块需要特定的环境去生成才可以使用. 前期准备如下: 1.安装Node.

  • SQL Server批量插入数据案例详解

    在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters),高效插入数据. 新建数据库: --Create DataBase create database BulkTestDB; go use BulkTestDB; go --Create Table Create tab

随机推荐