多行成一行

时间:2013-12-17 16:03:01

标签: sql sql-server

我尝试在SQL SERVER 2008中创建一个查询,该查询将在每个帐户的单行中显示多行。

该表目前正在显示如此数据......(每个帐户的CD数量也不相同)

表格查询

SELECT 
  [ACCOUNTNO]
  ,DT
  ,POSTDT
  ,CD
  ,NO
  ,SEQNO
 FROM [dbo].[DInformation]

结果

ACCOUNTNO   DT          POSTDT      CD      NO  SEQNO
50000878915 06/29/2011  06/29/2011  52074   639 2005
50000878915 07/03/2008  07/03/2008  6650222 749 3008
50000878915 07/03/2008  07/09/2008  6720030 644 3032
50000878915 07/23/2008  07/23/2008  99801   995 2055
50000878915 07/23/2008  07/23/2008  99801   995 2056
50000878915 07/23/2008  07/23/2008  7109045 994 2134
50000878915 07/10/2008  07/10/2008  52017   996 169
50000878915 07/23/2008  07/23/2008  99801   995 2055
50000878915 07/23/2008  07/23/2008  99801   995 2056
50000878915 07/23/2008  07/23/2008  30010   992 2087
50000878915 07/23/2008  07/23/2008  52038   993 2032
65478078915 10/01/2012  01/09/2013  6910002 871 3076
65478078915 11/01/2012  01/09/2013  6910002 888 3055
65478078915 12/01/2012  01/09/2013  6910002 6   3085
65478078915 01/01/2013  02/06/2013  6910002 918 3009
65478078915 02/01/2013  03/05/2013  6910002 668 3018
65478078915 03/01/2013  04/04/2013  6910002 24  3065

我希望结果显示如此......

50000878915 06/29/2011  06/29/2011  52074   639 2005 07/03/2008 07/03/2008     6650222  749 3008 07/03/2008 07/09/2008  6720030 644 3032 07/23/2008 07/23/2008  99801   995 2055 07/23/2008 07/23/2008  99801   995 2056 07/23/2008 07/23/2008  7109045 994 2134 07/10/2008 07/10/2008  52017   996 169 07/23/2008  07/23/2008  99801   995 2055 07/23/2008 07/23/2008  99801   995 2056 07/23/2008 07/23/2008  30010   992 2087 07/23/2008 07/23/2008  52038   993 2032
65478078915 10/01/2012  01/09/2013  6910002 871 3076 11/01/2012 01/09/2013  6910002 888 3055 12/01/2012 01/09/2013  6910002 6   3085 01/01/2013 02/06/2013  6910002 918 3009 02/01/2013 03/05/2013  6910002 668 301803/01/2013  04/04/2013  6910002 24  3065

任何帮助都将非常感激

1 个答案:

答案 0 :(得分:-1)

如果您只想将它​​们列出样本节目,可以使用XML功能:

SELECT DISTINCT
       ACCOUNTNO
      ,STUFF((SELECT DISTINCT ',' + CONCAT(DT,POSTDT,CD,NO,SEQNO)
              FROM Table1 a 
              WHERE a.ACCOUNTNO = b.ACCOUNTNO
              FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'),1,1,'')

FROM Table1 b

演示:SQL Fiddle

如果您想让它们成为正确的字段,那么您正在查看某些PIVOT操作。

编辑:注意2012年添加了CONCAT()功能,如果使用先前版本将每个字段转换为字符串并通过+进行连接。