博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL For Xml
阅读量:6704 次
发布时间:2019-06-25

本文共 1053 字,大约阅读时间需要 3 分钟。

最近遇到点棘手的问题,大致如下:

  1、数据局格式:

企业名称 排口名称 监测时间  监测因子 

 a     b     c     pH值 

 a     b     c     氨氮 

 a     b     c     化学需氧量(COD)

企业名称、排口名称数据都一样,需求是把企业名称列相同的数据显示一行,开始觉得很简单,做着做着觉得拼接数据太烦,然后就想能不能用sql操作。

纠结了小半天没有写出一个适合的sql,然后去百度了(谷歌最近大姨妈了,上不去,也没研究咋回事),然后找到了N多种方案,最后找到一个方案。写sql函数,

sql函数的语法 大致 这样(有问题的话,麻烦指出来,好改正......)

if exists (select * from dbo.sysobjects where id = object_id(N'dbo.函数名称') and xtype in (N'FN', N'IF', N'TF'))--判断该函数是否存在drop function [dbo].函数名称GOcreate FUNCTION dbo.函数名称()RETURNS VARCHAR(500) --必须,类型可以集资定AS BEGIN
  DECLARE @SQL NVARCHAR(500)   SELECT @SQL = (ISNULL(@SQL+',','') + 需要合并的列名) FROM 表名  --ISNULL 必须包含两个参数   group by 分组的列名  --可选
RETURN @SQL  --最后一条必须是返回语句ENDgoselect distinct dbo.函数名称(),列名 from 表名

然后顺利解决。

之前用上面的方法,发现有点不够简洁,根据博友的提示,又重新整合了一个。

SELECT B.StuName ,LEFT(StuList,LEN(StuList)-1) as hobby FROM (SELECT StuName,(SELECT habbyName+',' FROM Habby   WHERE A.habbyId like'%'+cast(Id as nvarchar(5))+'%'  FOR XML PATH('')) AS StuListFROM Students A GROUP BY StuName,A.habbyId) B

这个做法不错。

转载于:https://www.cnblogs.com/bobo-pcb/p/3781968.html

你可能感兴趣的文章
java 字符串连接
查看>>
数组的二分查找法
查看>>
Android之SurfaceView简单分析
查看>>
js-数值保留2位小数?
查看>>
中国人现在最需要的不是科学技术,而是逻辑与哲学
查看>>
keepalived DROP vrrp与配置文件详解
查看>>
RBF高斯径向基核函数-svm
查看>>
Python调用自然语言处理包HanLP
查看>>
学习dubbo(7):基于dubbo的分布式系统架构介绍
查看>>
Oracle数据库账号频繁被锁定的原因排查
查看>>
java基础——字符串操作
查看>>
如何在 "万一的 Delphi 博客" 回复自动格式化的着色代码?
查看>>
Oracle小数点保留问题
查看>>
Objective-C之成魔之路【17-内存管理】
查看>>
Protostuff一键序列化工具、Protobuf JAVA实现
查看>>
微信小程序 - does not have a method ......
查看>>
车牌识别。EasyPR OpenALPR
查看>>
ttserver 常见操作
查看>>
通过 mysqldump 搭建基于 gtid MySQL 5.7 主从复制
查看>>
dojo框架学习笔记-1
查看>>