2010-10-27 43 views
1

我運行一個簡單的statment最終使輸出如下:使用SQL,而不是刪除,然後從鍵盤

select '''' + name + '''' + ',' as Emp_Names from dbo.employee

Emp_Names 
'Jason', 
'Robert', 
'Celia', 
'Linda', 
'David', 
'James', 
'Alison', 
'Chris', 
'Mary', 

是否有SQL的方式,可以顯示我的期望輸出如:

Emp_Names 
'Jason', 'Robert','Celia','Linda','David','James','Alison','Chris','Mary',

我可以按Delete(刪除)和End一起到那裏但只有極少數的記錄,但沒有一百年記錄...

謝謝大家!

我使用的SQL Server 2005 +

+1

是什麼在兩個輸出有什麼區別? – 2010-10-27 00:54:54

+0

編輯的問題顯示了我所瞭解的兩種格式之間的區別。 – 2010-10-27 12:14:39

回答

1

您必須註明您所使用的SQL執行或產品。

如果您碰巧在MySQL中工作,您正在尋找GROUP_CONCAT聚合函數。

如果您碰巧在R:Base中工作,您正在尋找LISTOF聚合函數。

2

是的,但這取決於您使用的是哪個數據庫?

在SQL Server 2005或更高版本中,如果需要一列中的所有名稱,則可以使用stuff函數。

SELECT STUFF((SELECT DISTINCT TOP 100 PERCENT '' +名稱 FROM僱員 ORDER BY '' +命名 FOR XML PATH( '') ),1,1, '') 或

選擇STUFF((SELECT DISTINCT TOP 100 PERCENT '' ' ''' +名稱 FROM僱員 ORDER BY '' ' ''' +名稱 FOR XML PATH( '') ),1- ,2,'')+''''
否則你可以使用pivot命令將每個名稱作爲自己的列。使用pivot命令的唯一方法是,您需要事先知道名稱,否則您會將它與stuff函數結合使用。

+0

謝謝,Clyc !!!有用。 – Chris 2010-10-27 01:09:06

+0

我想知道Oracle,Clyc的語法是什麼? – Chris 2010-10-27 01:10:48

+0

@Chris:請參閱[此鏈接以各種方式在Oracle中創建逗號分隔列表](http://www.oracle-base.com/articles/10g/StringAggregationTechniques.php) – 2010-10-27 01:25:54

0

在這裏您可以看到如何在SQL Server上實現與MySQL的GROUP_CONCAT()(這似乎是您需要的)的等價物。

http://explainextended.com/2010/06/21/group_concat-in-sql-server/

它將串聯每一組的結果在一個單一的逗號分隔的字符串。對於這個用例,你的查詢最終會比那裏的例子簡單得多,主要是因爲你不需要分組。

+0

謝謝,V!申請它。 – Chris 2010-10-27 01:09:37

0

GADS,group_concat-in-sql-server肯定比我會怎麼做更難:

1> select sum(ID), count(*) from #b 
2> go 

----------- ----------- 
      41   7 

1> declare @i varchar(60) 
    select @i = coalesce(@i, '') + ltrim(str(ID)) + ', ' 
    from #b 
    select @i 
2> go 

------------------------------------------------------------ 
2, 3, 4, 6, 7, 8, 11,          

額外的信用失去了最後一個逗號....