comp project
fb A
fb B
fb C
fc B
fc D
fc E
fc F
要得到:
comp project
fb A,B,C
fc B,D,E,F
最好是函数,就是参数是fb, 函数返回A,B,C (逗号相隔), 如果参数是fc, 将返回B,D,E,F
SELECT T.comp,STUFF((SELECT ','+project FROM TB WHERE T.comp=comp FOR XML PATH('')),1,1,'')project
FROM TB T
WHERE T.comp='fb'
GROUP BY comp
select comp,project=stuff((select ','+project from TableA where comp=a.comp for xml path('')),1,1,'')
from TableA as a
group by comp
合并列值
--*******************************************************************************************
表结构,数据如下:
id value
----- ------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
需要得到结果:
id values
------ -----------
1 aa,bb
2 aaa,bbb,ccc
即:group by id, 求 value 的和(字符串相加)
1. 旧的解决方法(在sql server 2000中只能用函数解决。)
--=============================================================================
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go
--1. 创建处理函数
CREATE FUNCTION dbo.f_strUnite(@id int)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @str varchar(8000)
SET @str = ''
SELECT @str = @str + ',' + value FROM tb WHERE id=@id
RETURN STUFF(@str, 1, 1, '')
END
GO
-- 调用函数
SELECt id, value = dbo.f_strUnite(id) FROM tb GROUP BY id
drop table tb
drop function dbo.f_strUnite
go
/*
id value
----------- -----------
1 aa,bb
2 aaa,bbb,ccc
(所影响的行数为 2 行)
*/
--===================================================================================
2. 新的解决方法(在sql server 2005中用OUTER APPLY等解决。)
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go
-- 查询处理
SELECT * FROM(SELECT DISTINCT id FROM tb)A OUTER APPLY(
SELECT [values]= STUFF(REPLACE(REPLACE(
(
SELECT value FROM tb N
WHERE id = A.id
FOR XML AUTO
), ' <N value="', ','), '"/>', ''), 1, 1, '')
)N
drop table tb
/*
id values
----------- -----------
1 aa,bb
2 aaa,bbb,ccc
(2 行受影响)
*/
--SQL2005中的方法2
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go
select id, [values]=stuff((select ','+[value] from tb t where id=tb.id for xml path('')), 1, 1, '')
from tb
group by id
/*
id values
----------- --------------------
1 aa,bb
2 aaa,bbb,ccc
(2 row(s) affected)
*/
drop table tb
if object_id('F_Str') is not null
drop function F_Str
go
create function F_Str(@comp VARCHAR(50))
returns nvarchar(100)
as
begin
declare @S nvarchar(100)
select @S=isnull(@S+',','')+project from TableA where comp=@comp
return @S
end
GO
SELECT DISTINCT comp,dbo.F_Str(comp) FROM TableA
DECLARE @comp VARCHAR(20)
SET @comp='fb'
;WITH cte(comp,project) AS(
SELECT 'fb', 'A' UNION ALL
SELECT 'fb', 'B' UNION ALL
SELECT 'fb', 'C' UNION ALL
SELECT 'fc', 'B' UNION ALL
SELECT 'fc', 'D' UNION ALL
SELECT 'fc', 'E' UNION ALL
SELECT 'fc', 'F'
)
SELECT comp
,STUFF((SELECT ','+project
FROM cte a
WHERE a.comp=b.comp
FOR XML PATH('')),1,1,'')
FROM cte b
WHERE b.comp=@comp
GROUP BY b.comp
SELECT comp,
project = Stuff((SELECT ','+project
FROM table1 AS b
WHERE b.comp = a.comp
for xml path('')),
1,1,'')
FROM (SELECT DISTINCT comp FROM table1) AS a
comp project
---- ------------
fb A,B,C
fc B,D,E,F
等级:
记得前几年,还是初级的时候,面试官问到,请你讲一下sql语句的执行顺序。当时我以为就是按照sql的关键字排列顺序来执行的。当时说完,面试官心里估计已经直接pass我了吧。今天复习的时候,突然想起这个基础知识点,...
SQL语句函数大全转载 2013年08月28日 15:13:26720二、字符中操作函数UPPER(S) 小写字母 UPPER(abc) ABCLOWER(S) 大写字母 LOWER(ACD) acdLEN(S) 求字符串的长度 LEN("中国1号") 7AT(S1,S2) 在字符串S2,找...
CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。 语法:CAST (expression AS data_type) expression:任何有效的SQServer...
结构化查询语言(Structured Query Language,简称SQL语句)从单个函数的使用上来看,较为简单,但是当表与表嵌套、几个函数组合使用,即可实现强大的数据查询功能,能从数据库中快速便捷地获取需要的信息。 本文总结...
SQL语句中的if函数使用,如果满足一个件条可以赋一个需要的值,方便代码判断 eg: SELECT *,if(ebay_excludecountrymodel.id is null,'false','true') checked FROM ebay_exshiplocation e left join ebay_...
case函数被习惯性的称为流程控制函数 其主要应用有以下两种 1、简单case函数。 单纯的对一个字段进行判断,并返回特定的值 形式为 CASE case_value WHEN when_value THEN statement_list ELSE statement_list END ...
在写SQL时,经常灵活运用一些SQL语句编写的技巧,可以大大简化程序逻辑。减少程序与数据库的交互次数,有利于数据库高可用性,同时也能显得你的SQL很牛B,让同事们眼前一亮。 目录 实用的SQL 1.插入或替换 2....
DATEDIFF ( datepart , startdate , enddate )释义:计算时间差; datepare值:year | quarter | month | week | day | hour | minute | second | millisecond startdate:开始日期 enddate :结束日期 ...
结果集[select查询语句] ) go 例题 编程一个自定义函数,接收一个参数课程编号,对成绩表该门课程的所学生成绩增加一个(1~5)的随机分数。 create function addgrade1(@cno3 char(3)) returns table as ...
1、操作select 语句:drop function if exists hello; create function hello(a int) returns varchar (255) begin declare x varchar(255); select `name` into x from gl_dept where id = a; return x; end;其
创建函数 create function f_name --f_name 函数名称 (@a varchar(20),@b int) --@a 第一个参数 varchar类型 @b第二个参数 int类型 return varchar(20) --返回值类型 as begin declare @c varchar(30) --创建变量...
这里写自定义目录标题概述1、聚合函数2、转换函数3、日期函数4、数字函数5、字符串函数6、系统函数7、文本和图像函数 概述 SQL中包含以下七种类型的函数: 聚合函数:返回汇总值。 转型函数:将一种数据类型转换...
转载自:https://blog.csdn.net/mrtwofly/article/details/53939400一、数学函数ABS(x) 返回x的绝对值BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x) 返回大于x的最小整数值EXP(x) 返回值e...
finereport SQL函数 1.公式解释 有的时候希望某个单元格能够直接获取到数据库中的某个值,而不是先要定义一个数据集后,再去取数据。这时就可以用 SQL 函数,下面讲解下 SQL 函数的用法。 SQL(connectionName,sql...
一、时间日期函数 ... 需要注意的是,在Java中的时间格式是“yyyy-MM-dd HH:mm:ss”,但是在oracle的sql中由于不区分大小写,时间格式中的“mm”将被识别为月,导致出现“ORA 01810 格式代码出现两次”的错误。
聚合函数对一组值进行计算并返回单一的值,通常聚合函数会与SELECT语句的GROUP BY子句一同使用,在与GROUP BY子句使用时,聚合函数会为每一个组产生一个单一值,而不会为整个表产生一个单一值。常用的聚合函数及说明...
--SQL优化语句的一般步骤 --1.通过show status命令了解各种...定位执行效率较低的SQL语句 --3.通过EXPLAIN分析较低SQL的执行计划 --4.通过show profile分析SQL --5.通过trace分析优化器如何选择执行计划 --6...
根据一个条件查出来多条信息,想要根据状态统计某项数据之和,可以用这条sql select SUM(CASE WHEN STATE = '5JA' THEN AMOUNT ELSE 0 END) 未销账,SUM(CASE WHEN STATE = '5JB' THEN AMOUNT ELSE 0 END) 已销账 ...
在工作中有两个sum的求和函数相加的时候如果其中一个是null那么相加的结果也是null
数据库操作 查看所有数据库 show databases; 查看当前使用的数据库 select database(); 创建数据库 create databases 数据库名 charset=utf8; 5.删除数据库 drop database 数据库名 ...6 ....1...
目录 1、窗口函数的描述 2、窗口函数中的元素 2.1、分区 2.2、排序 ...窗口是标准的SQL术语,用来描述SQL语句内OVER子句划定的内容,这个内容就是窗口函数的作用域。而在OVER子句中,定义了窗口所...
执行动态SQL语句 首先定义变量 @Games 为运动会名称, 为动态SQL语句定义变量 然后建立动态的SQL语句 最后运行这个动态的SQL语句 EXEC (@SQL2) 或 Exec SP_ExecuteSQL @SQL2 -- 执行动态SQL语句示例,复制后可直接...
SQL语句实例 表操作 例 1 对于表的教学管理数据库中的表 STUDENTS ,可以定义如下: CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) ...
1、 create function f_1 (@a int ,@b int) returns int as begin declare @c int set @c=@a+@b return @c end --调用函数。 select dbo.f_1(1,2)
前一段时间进行一段比较复杂的数据库业务查询需要对查询出来的数据进行分类统计 ,用到了数据库的case函数,这时才注意到这个函数有两种用。 一种是: case 字段名 when 字段值 then 值 else 值2 end 这一种是...
目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序: sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。 一、sql执行顺序 (1)from (3)...
SQL 查询的执行顺序是怎样的? 好像这个问题应该很好回答,毕竟自己已经写了无数个 SQL ...言归正传,SELECT语句的完整语法如下: 1. SELECT 2. DISTINCT <select_list> 3. FROM <left_table> 4....
SQL中IF函数的使用 if(a,b,c) if判断,如果a满足条件,返回b,否则返回c 举个例子 查询SC表中及格的学生 创建表SC SC(SId,CId,score) –SId 学生编号,CId 课程编号,score 分数 create table SC(sid varchar(10),cid...
设1表中有A、B两列,我想添加一组数据(c,d)进去(并没有C的值),...如何写sql语句? Ps.我知道如果只添加C可以这么写: ``` insert into 1(A) select max(A)+1 from 1; ``` 但是我想同时将数据d添加进去
好记性不如写成博客公司要做个台帐报表,用到sql加减乘除运算,sql判断及各种函数等,如下create table temp( SELECT (@rowNO := @rowNo+1) AS '序号', a.apply_date AS '申请日期', a.merchant_name AS '...