2012-03-12 50 views
1

我有一個表中有飛機和客戶選項。連接列和行在一起

Cust | opt1 | opt2 
------------------------ 
A  | abc | def 
B  |  | mno 
F  |  | pqr 
A  |  | ghi 

我用

SELECT 
Cust, 
opt1 + opt2 as options   
FROM myDB where Len(opt1) >1 or Len(opt2) >1 

當然我得到卡斯特一兩次,我的結果列表

Cust | options | 
------------------------ 
A  | abcdef |  
A  |  ghi | 
B  |  mno | 
F  |  pqr | 

我怎樣才能進一步凝聚這個查詢,以便結果變成:

Cust | options | 
------------------------ 
A  | abcdefghi |  
B  |  mno  | 
F  |  pqr  | 

謝謝! (使用SQL server Express)

回答

2
SELECT DISTINCT c.Cust, options = ((SELECT c2.opt1 + c2.opt2 
    FROM dbo.myDB AS c2 WHERE c2.Cust = c.Cust 
    FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)')) 
FROM dbo.myDB AS c; 
+1

如果您認爲這應該更容易,我同意你的看法!請對這兩個Connect項目進行投票和評論:http://connect.microsoft.com/SQLServer/feedback/details/728969/feature-request-ordered-set-functions-within-group-clause和http:// connect。 microsoft.com/SQLServer/feedback/details/247118/sql-needs-version-of-mysql-group-concat-function – 2012-03-12 18:17:20

+0

+1給你的答案....也投了連接的項目 – Lamak 2012-03-12 18:21:09

+0

謝謝,你有主題標題我可以谷歌在這個問題上? – Lumpi 2012-03-12 18:24:26