2015-06-15 27 views
0

在SQL Server如何改變列數據作爲一個明智的行格式...在SQL Server中如何將列數據更改爲行智能格式?

對於前:

輸入

Name date 
-------------- 
xxx 12/12/2015 
xxx 11/12/2015 
xxx 10/12/2015 
yyy 9/12/2015 

所需的輸出:

Name Date 
------------------------------------------ 
xxx 10/12/2015 11/12/2015 12/12/2015 
yyy 9/12/2015 
+1

所以,你想要一個單一的日期列日期由兩個空格以升序分隔? – Kritner

+1

通常您需要在客戶端上完成這項工作。在MySql中,你可以使用非標準的group_concat()方法。 –

+0

你可以使用'ROW_NUMBER'和動態數據透視 – ughai

回答

0

檢查這個:

DECLARE @DataSource TABLE 
(
    [name] CHAR(3) 
    ,[date] DATE 
); 

INSERT INTO @DataSource ([name], [date]) 
VALUES ('xxx', '12/12/2015') 
     ,('xxx', '11/12/2015') 
     ,('xxx', '10/12/2015') 
     ,('yyy', '9/12/2015'); 

WITH DataSource AS 
(
    SELECT DISTINCT [name] 
    FROM @DataSource 
) 
SELECT [name] 
     ,STUFF 
     (
      (
       SELECT ' ' + CAST([date] AS VARCHAR(12)) 
       FROM @DataSource 
       WHERE DS.[name] = [name] 
       ORDER BY [date] ASC 
       FOR XML PATH(''), TYPE 
      ).value('.', 'VARCHAR(MAX)') 
      ,1 
      ,1 
      ,'' 
     ) 
FROM DataSource DS; 

enter image description here

+0

Gotgn是的,我們從你的查詢得到的結果非常感謝你的迴應...,但我們有DB表,所以需要聲明表,如何從選擇查詢語句直接從表中檢索結果 – Ethirajram

+0

您可以檢查此鏈接 - http://www.sql-server-helper.com/tips/date-formats.aspx爲了以不同的格式表示日期。 – gotqn

+0

@Ethirajram不要聲明新表,只需將'@ DataSource'替換爲'WITH'子句中的真實表名,就可以了。 – gotqn

相關問題