2013-12-17 57 views
-3

我试图在SQL SERVER 2008中创建一个查询,该查询将在每个账户中将多行显示为单行。将多行组合成单行

该表是当前显示像这样的数据...(也CDS的每个帐户的数目是不一样的)

表查询

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 

任何帮助将是非常赞赏

+0

你能用文字解释你想要做什么吗? –

+0

你想获得每个账户最古老的DT吗? – PeterRing

+0

你在做什么请详细解释 – Anjali

回答

-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()函数,如果使用以前版本将每个字段转换为字符串并通过+连接。

+0

我收到以下错误...'CONCAT'不是公认的内置函数名称。我目前使用的是sql server 2008 – user2974995

+0

请参阅底部的注释,您必须在每个字段中使用CAST(fieldname AS VARCHAR(25))。 –

+0

感谢这工作完美 – user2974995