2014-10-07 52 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 

乾杯