2012-02-22 34 views
2

我有以下格式的SQL Server 2008數據庫表FILE_DETAILS。如何使用自加入和分組編寫查詢?

ID FileName Filesize_in_MB 
-------------------------------- 
1  a.txt  5 
2  b.txt  2 
3  c.txt  2 
3  d.txt  4 
4  e.txt  6 
4  f.txt  1 
4  g.txt  2 
5  h.txt  8 
6  i.txt  7 

現在我想獲取是波紋管

ID FileName Filesize_in_MB 
-------------------------------- 
1  a.txt    5 
2  b.txt    2 
3  c.txt;d.txt   6 
4  e.txt;f.txt;g.txt 9 
5  h.txt    8 
6  i.txt    7 

在上面的結果會發生什麼ID成爲唯一的密鑰和FILENAME已經得到重視和;分離,並通過組的總和還FILESIZE_IN_MBID

我嘗試過各種組合,比如groupby + self join,還有子查詢和所有那 但我想我遺漏了什麼。

是否有可能在SQL查詢中處理這個問題?

在此先感謝

+1

這篇文章http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in- ms-sql-server-2005可以幫助你。 – Marco 2012-02-22 08:28:52

回答

1

你應該能夠做到這一點使用group by。彙總Filesize_IN_MB可以使用sum作爲聚合器完成。但是,要彙總FileName,您可能需要create an AGGREGATE in SQL SERVER 2008R2。這將允許您使用Concatenate作爲聚合功能。

select Concatenate(FileName), sum(Filesize_IN_MB) FROM FILE_DETAILS group by ID 

還有另一種方式aggregate concatenation這似乎很簡單,但我還沒有嘗試過。