2011-08-22 23 views
1

是否有任何地方可以獲得像這樣的值?將特定列值與SQL結合使用

id  column_1  column_2 
1   abc    hello 
1   abc    world 

id  column_1  column_2 
1   abc    hello world 

非常感謝:)

+3

是的,但相比設計你的模式更好,或者讓表示層太沒效率做到這一點,而不是數據庫層:-) – paxdiablo

+0

@paxdiablo感謝,canyou提供我解決方案? –

+0

@andrain謝謝,這可能用於mssql? –

回答

0

在MySQL中,你可以使用GROUP_CONCAT,這樣的事情:

SELECT id, column_1, GROUP_CONCAT(column2 SEPARATOR ' ') FROM some_table GROUP BY id, column_1 
+0

OP是在Sql Server中... –

+0

哎呀,錯過了標籤。 – xdazz

0

嗯,這實際上是這樣的:

DECLARE @t TABLE (id integer, column_1 varchar(20), column_2 varchar(20)) 

INSERT into @t 
    SELECT 1 ,'abc' ,'hello' 
    UNION 
    SELECT 1 ,'abc','world' 

SELECT DISTINCT 
    id, column_1, 
    (SELECT column_2 + ' ' FROM @t FOR XML PATH('')) column_2 
FROM @t 
+0

我相信這個表中有更多的數據,而不僅僅是兩行。通過您的查詢,column_2列將顯示column_2中每行的值並列在一起,用於id和column_1的每個組合,我確信這不是原始發佈者想要的內容。 – deutschZuid

+0

正如我所說,相當直接。 :) – aquinas

+0

我明白你的意思了,現在大聲笑。 – deutschZuid

2

我假設在COLUMN_1給定值並不總是對應於ID,反之亦然相同的值。

DECLARE @temptable TABLE (id integer, column_1 varchar(20), column_2 varchar(20)) 

INSERT into @temptable 
select 1 ,'abc' ,'hello' 
UNION 
select 1 ,'abc','world' 
union 
select 1, 'def', 'blah' 
union 
select 2, 'abc', 'world' 
union 
select 2, 'abc', 'blah' 

select id, column_1, 
(SELECT column_2 + ' ' 
FROM @temptable t2 
    where t2.id = t1.id and t2.column_1 = t1.column_1 
FOR XML PATH('') 
) new_column_2 
from @temptable t1 
group by id, column_1 

結果:

id column_1 new_column_2 
1 abc   hello world 
1 def   blah 
2 abc   blah world