2014-10-07 20 views
0

我正在运行Sybase SQL 12.5.1。Sybase SQL追加到SELECT语句中的变量

我想将行的值合并到分隔列表中。

我期待以下语句返回“1; 2; 3”,但它返回; 3。

CREATE TABLE #temp3(x varchar(5)) 
INSERT INTO #temp3 values('1') 
INSERT INTO #temp3 values('2') 
INSERT INTO #temp3 values('3') 
SELECT * FROM #temp3 


DECLARE @CombinedValues varchar(8000) 
SELECT @CombinedValues = COALESCE(@CombinedValues, ';', '') + #temp3.x FROM #temp3 
SELECT @CombinedValues 
DROP TABLE #temp3 

它看起来像@CombinedValues只获取最后一个值,但它应该有所有这些。

任何想法将不胜感激。

感谢

+0

我猜你在谈论ASE,不是SQL Anywhere? – 2014-10-07 19:06:56

回答

1
SET NOCOUNT ON 
CREATE TABLE #temp3(x varchar(5)) 
INSERT INTO #temp3 values('1') 
INSERT INTO #temp3 values('2') 
INSERT INTO #temp3 values('3') 

DECLARE @CombinedValues varchar(8000)='' 
SELECT @CombinedValues += x+';' FROM #temp3 
PRINT @CombinedValues 
DROP TABLE #temp3 
+0

如果您有任何问题随时问。 – SubqueryCrunch 2014-10-07 19:15:03

+0

它不会让我去+ =,我不认为这是有效的在这个SQL版本。 – 2014-10-07 20:14:36

+0

然后使用SELECT CombinedValues = CombinedValues + – SubqueryCrunch 2014-10-08 04:53:08

1

如果以前的答案不工作(不为我工作),那么请尝试以下:

SET NOCOUNT ON 

CREATE TABLE #temp3 (
    x varchar(5) 
) 
INSERT INTO #temp3 values('1') 
INSERT INTO #temp3 values('2') 
INSERT INTO #temp3 values('3') 

DECLARE @CombinedValues varchar(8000) 

update #temp3 
set  @CombinedValues = @CombinedValues + x + ';' 
FROM #temp3 

PRINT @CombinedValues 

DROP TABLE #temp3 

干杯