将列和行连接在一起

时间:2012-03-12 18:06:36

标签: sql sql-server-express

我有一张包含飞机和客户选项的桌子。

例如

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上工作)

1 个答案:

答案 0 :(得分: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;