2017-09-14 7 views
0

現在、以下の列と行を持つ大きなデータセットが1つあります。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と1最新のものと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」行を一致させるロジックは何ですか?あなたの例では、同じ 'number'または' name'値に対して、例えば10個のYレコードと99個のNレコードがあれば、どの出力を出力するべきかは不明です。 – 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 
関連する問題