2017-08-09 78 views
0

我有一個表,只有2列,其是作爲遵循2相同ID列〜1行

|ID | Date  | 
=================== 
|1 | 03/04/2017 | 
|1 | 09/07/1997 | 
|2 | 04/04/2014 | 

我想達到的最終結果作爲遵循

|ID | Date 1  |Date 2  | 
================================ 
|1 | 03/04/2017 | 09/07/1997 | 
|2 | 04/04/2014 | NULL  | 

我目前閱讀PIVOT功能,我不知道我是否在正確的軌道上。我還是新的SQL

+0

您正在使用的數據庫(如Oracle,SQL服務器,Postgres的,等等) ?你嘗試過什麼嗎? –

+0

'SELECT ID,MIN(Date)AS date_1,MAX(Date)AS date_2 FROM yourTable GROUP BY ID' –

+0

正在使用SQL Server,剛剛嘗試過PIVOT函數,它給了我只有ID爲'1'的日期1 – TinTin

回答

2

一個簡單的支點查詢應該在這裏工作,有一個轉折點。對於您的數據,只有一行,但在這種情況下,您希望報告第一個日期和第二個日期。我們可以使用CASE表達式來處理這種情況。

SELECT 
    ID, 
    MAX(Date) AS date_1, 
    CASE WHEN COUNT(*) = 2 THEN MIN(Date) ELSE NULL END AS date_2 
FROM yourTable 
GROUP BY ID 

輸出:

enter image description here

演示在這裏:

Rextester

+0

I沒有檢查結果;)+1 –

+0

@Pரதீப்我實際上是要告訴你不要回答新手樞軸查詢問題,但後來我意識到有一個轉折,所以我決定回答:-) –

+0

謝謝,結果是我想要的。但是,我可以問一下,如果我的ID 1有3個日期,而ID 2只有1個日期,那麼該怎麼辦? – TinTin

1

這可以輕鬆完成使用min/max聚合函數

select Id,min(Date), 
     case when min(Date)<>max(Date) then max(Date) end 
From yourtable 
Group by Id 

如果這不會幫助你與你的原始數據,然後改變樣本數據和預期的結果