Sql Sybase:如何连接Sybase列中的行
我有一张带ID和部门的桌子Sql Sybase:如何连接Sybase列中的行,sql,tsql,concatenation,sybase,Sql,Tsql,Concatenation,Sybase,我有一张带ID和部门的桌子 桌子是 id dept salary date 1 30 2000 8/25/2015 12:06:54.870 PM 2 20 5500 7/12/2015 12:06:54.870 PM 3 30 6700 11/21/2013 12:06:54.870 PM 4 30 8900 4/16/2009 12:06:54.870 PM 5 30 9900 6/
桌子是
id dept salary date
1 30 2000 8/25/2015 12:06:54.870 PM
2 20 5500 7/12/2015 12:06:54.870 PM
3 30 6700 11/21/2013 12:06:54.870 PM
4 30 8900 4/16/2009 12:06:54.870 PM
5 30 9900 6/29/2014 12:06:54.870 PM
6 10 1120 7/3/2015 12:06:54.870 PM
7 20 8900 4/13/2013 12:06:54.870 PM
8 10 2400 7/23/2015 12:06:54.870 PM
9 30 2600 8/21/2015 12:06:54.870 PM
10 10 2999 8/3/2015 12:06:54.870 PM
只需要这样的输出Dept ID
30 1,3,4,5,9
这是我知道的最好的方法。如果有人知道更好的解决方案,请发帖子:
select dept,list(id,',' order by dept) from TableName group by dept
我已将您的表命名为sal
DECLARE @id INT
, @max INT
, @dep INT
, @all VARCHAR(255)
SELECT @id = 1
, @max = MAX(id)
FROM sal
SELECT * INTO #tmp FROM sal
WHILE (1=1)
BEGIN
SELECT @dep = dept
FROM #tmp
WHERE id = @id
IF @dep IS NULL
BEGIN
SELECT @id = @id + 1
IF @id > @max
BREAK
ELSE
CONTINUE
END
UPDATE #tmp
SET @all = @all + ',' + CONVERT(VARCHAR, id)
WHERE dept = @dep
--remove last comma
select @all = RIGHT(@all, LEN(@all)-1)
DELETE #tmp
WHERE dept = @dep
-- selecting the output. insert into table if you want
SELECT @dep, @all
SELECT @dep = NULL
, @all = NULL
SELECT @id = @id + 1
IF @id > @max
BREAK
-- fail safe
IF @id > 100
BREAK
END
drop table #tmp
我遇到了类似的问题,并提出了以下解决方案:
select dept,list(id,',' order by dept) from TableName group by dept
假设
TableName
是表的名称 对于那些希望此功能适用于特定查询的人来说,这是一个更简单的解决方案:
DECLARE @res_csv VARCHAR(10000)
BEGIN
SELECT SomeIntField INTO #tmp FROM YourTblName WHERE 1=1 -- a hardcoded query
UPDATE #tmp
SET @res_csv = @res_csv + case when @res_csv is not NULL then ',' end + CONVERT(VARCHAR, SomeIntField)
drop table #tmp
print @res_csv
END
您好Nigel欢迎来到StackOverflow,下次请尝试提供一个示例,以便我们更好地理解问题并更快地给您答案–同时请阅读,这是串联还是更像一个轴心。应该这样工作:@hogan Q:
Stuff
和XML路径
是通用tsql吗?因为这个问题说sybase.@JuanCarlosOropeza-xml支持和替换支持存在于所有现代数据库平台中。我不知道sybase的细节,所以我没有给出答案,而是发表了评论。