2016-12-20 14 views
0

複数のプロジェクトの複数のキャッシュフロー表をSQLを使用して1つの表に結合しようとしました。キャッシュ・フローは、それらのいくつかはかもしれない、別のプロジェクトのために別の日付で行われているので、私が使用していたクエリは、以下のとおり異なる時刻のデータを持つSQL外部結合時系列

SELECT a.DATE1, b.DATE2, a.CF1, b.CF2 
FROM a 
FULL OUTER JOIN b 
ON b.DATE2= a.DATE1 

と、結果表を以下に示している、

enter image description here

されます同じ日に起こる、そうでないかもしれない。私たちは最初の2つの日付列を組み合わせ

enter image description here

、結果の意志は次のようになりますように、私は私のコードを調整する方法を疑問に思って。他の1つがNULLの場合は日付の値を保持し、同じ日にキャッシュフローが発生した場合は重複した値を削除します。

私は複数のプロジェクトを結合する必要があるため、このメソッドは拡張のために堅牢でなければなりません。私は、次を使用しようとしました

SELECT ISNULL(a.DATE1, '') + ISNULL(b.DATE2, ''), a.CF1, b.CF2 
FROM ... 

しかし、これが唯一のNULLの部分を解決し、そして実際に複製された日付を追加し、新しい日付になります。

ご協力いただきありがとうございます!

+0

'COALESCE(a.Date1、b.Date2)' – 1000111

+0

MySQLは 'FULL OUTER JOIN'私の知る限りをサポートしていないことができますので、私はあなたが実際に最初のテーブルを生成する方法思ったんだけど。 –

+0

私はMicrosoft SQL Server Mgmt Studioを使用していますので、これはおそらくMySQLと同じではありませんか? –

答えて

1

これはcoalesce()を使用して試してください。

 SELECT coalesce(a.DATE1, b.DATE2)as date, a.CF1, b.CF2 
     FROM a 
     FULL OUTER JOIN b 
     ON b.DATE2= a.DATE1 
+0

この機能は素晴らしいです!ありがとう! –

+0

さらに、私はSQLをかなり新しくしています。私はそれらを必要とするときにCOALESCEのような機能をどのように見つけることができますか?このようなすべての機能を検索したり、ここに質問を投稿しなければならない場所がありますか? –

+0

あなたは簡単にhttp://www.w3schools.com/sql/またはwww.tutorialspoint.com/sqlのようなオンラインチュートリアルを参照することができますいくつかのSQL電子ブックや教科書を読むことによってこれらを見つけることができます –

関連する問題