2017-09-14 55 views
0

我目前有一個以下列和行爲例的大型數據集。SQL查詢 - 將數據拆分爲多個表並根據一系列ID進行連接

 Latest Name Code Date   Number 
     Y  abc def  9/10/2017 123 
     N  abc def  10/10/2014 123 
     N  abc def  08/08/2008 123 

我需要改變輸出,使其內容如下:

 Latest Name Code Date   Number Latest Name Code Number 
     Y  abc def  9/10/2017 123  N  abc def  10/10/2014 123 
     Y  abc def  9/10/2017 123  N  abc def  08/08/2008 123 

我已經通過這個問題想過,我想我需要將表分成2個較小的表,一個爲Y作爲最新和一個與N作爲最新然後使用內部連接來匹配結果? 任何人都可以幫我這個請嗎? 我曾嘗試以下:

 CREATE Table Latest AS 
     SELECT * 
     FROM [Original Table] 
     WHERE Latest = 'Y' 

     CREATE Table Latest AS 
     SELECT * 
     FROM [Original Table] 
     WHERE Latest = 'N' 

但是我得到一個錯誤,當我試圖運行查詢 - 不正確的語法SELECT附近,預計ID,任何人都可以幫助嗎?

+0

你能說出你想要的輸出在英國的業務規則的形式?換句話說,匹配「Y」行和「N」行的邏輯是什麼?從你的例子來看,如果你有10個Y記錄和99個N記錄來表示相同的'number'或'name'值,那麼它應該是什麼樣的輸出。 – SlimsGhost

+0

道歉,我忘了在.N行應該匹配Y行對代碼列。 – Stackover53

+0

什麼是連接屬性? –

回答

0

假設name是一個連接屬性,那麼下面的查詢返回預期的輸出

SELECT t1.*, t2.* 
    FROM 
    (
    SELECT * 
    FROM [Original Table] 
    WHERE Latest = 'Y' 
) t1 
    JOIN 
    (
    SELECT * 
    FROM [Original Table] 
    WHERE Latest = 'N' 
) t2 ON t1.name = t2.name 
相關問題