select mid,stuff((select distinct ','+uid from t1 where a.mid=mid for xml path('')),1,1,'') AS items
from t1 a group by mid
mid items
1 a,b,c,d
2 a,b,c
3 a,b,c
--按字段分组,将该组下某个字段多行以逗号拼接成一行CREATE TABLE t1 ( mid INT, uid VARCHAR(1) )insert into t1 values (1,'a')insert into t1 values (1,'b')insert into t1 values (1,'b')insert into t1 values (1,'c')inser...
declare @sql varchar(400)
DECLARE @T1 TABLE(ID INT,SIZE_VALUE VARCHAR(10),SIZENAME VARCHAR(10) )
insert into @T1
SELECT ID=1,SIZE_VALUE='A001',SIZENA...
with cte as (
select C.*,name FROM (
select abc00,x.y.value('.', 'VARCHAR(16)') as abc05,KID from (
select ABC00, CAST('
' + REPLACE(abc05, ',','
') + '
' as xml ) as KID FROM APP_BUSINESS_CONTRACT where
charindex(@split,@datas) #获取第一个
分隔
符所在位置
#@split为
分隔
符,通过什么
分隔
符号进
行
字段
分隔
#@datas为含有
分隔
符的字段,对此字段进
行
分隔
substring(@datas,@startindex,@endindex) #截取字段
#@datas用于截取的字段
#@startindex开始索引位置
#@endindex结束索引位置
len(@dat
--试图1
create view v_projectuser as
select t.F_ProjectId,t.F_UserId,u.F_ChineseName from T_ProjectUser t,T_User u where t.F_UserId = u.f_id and t.F_Enabled = '1';
--试图2(依赖试图1)
create view v_projectusername as
SELECT a.F_ProjectId ,
ST...
如图,将图1的结果变
成
图2的结果,使用函数 WMSYS.WM_CONCAT 即可。
查询语句需要配合使用group by
select aa,wmsys.wm_concat(t1.name) from (
select t.name,to_char(t.createdate,'yyyy-mm-dd') aa from td_u
第二篇:
sqlserver
临时表浅谈
拼接字符串在实际使用的时候,表结构可能与table_sub的不同,比如:表格中的每个main_id都不相同,那么查询出来的结果就不会拼到一起。如果table_sub的表结构如下:
table_sub
sub_id
sub_hobby
Create FUNCTION [dbo].[fn_SplitTSQL]
(@String NVARCHAR(MAX), @Separator NCHAR(1) = N',') RETURNS TABLE
RETURN
SELECT
-- N - LEN(REPLACE(LEFT(S, N), @Separator, '')) + 1 AS POS,
ROW_NUMBER() OVER (ORDE...
方法二:使用XML表达式和节点方法
将
逗号
分隔
的字符串包含在 `<root><item>...</item></root>` 的 XML 表达式中,然后使用节点方法进
行
分割。例如:
DECLARE @str NVARCHAR(MAX) = 'A,B,C,D'
SELECT n.value('.', 'varchar(10)') as value
FROM (SELECT CAST('<root><item>' + REPLACE(@str, ',', '</item><item>') + '</item></root>' as xml) as x) as t
CROSS APPLY x.nodes('/root/item') as q(n)
value
-----