2017-06-09 8 views
1

私はいくつかの異なるデータベースからデータを取得して、共通の特定の列にヒンジを持つ情報の要約テーブルを作成しています。要約テーブルのさまざまなクエリ/テーブル/ビューのさまざまな結果を結合します

テーブルのすべてが共通の3列があります。これ以外に

年 月 クライアント

を、彼らはカウント、合計、計算およびAのさまざまな側面にちょうど一般的なクエリーの混合物でありますクライアント。私は各クライアントがどのように基本的な要約ページをマップしようとしています。私の夢は、このすべてを一元的なDBに集約し、詳細な情報をそのままテーブルに取り入れることでした。次に、これらの表を要約するために、それぞれに一連のビューを作成して、表ごとに1つのビューを作成します。次に、年/月/クライアントごとにすべてのビューをグループ化するサマリー表/ビューを作成します。

しかし、私はすべてをまとめるのに苦労しています。私はテーブルのような生データを持っています。

注文番号/ラインやっ視野に/クライアント/年/月

:注文の

カウント/ライン/クライアント/年/月の合計。

しかし、ビューのバリエーションのために私はUNIONのようなことはできません。

View1 

Year Month Count Sum   ClientCode 
2017 May  18  146   A 
2017 May  7  110   B 
2017 May  2  17   C 

View2 
Year Month CountOfOrders CountOfFiles SumOfLines ClientCode 
2017 May     8    2   140 A 
2017 May     7    6   25  B 

(ビューの)

例のデータは、夢の目標は、次のようになります。私は、WHERE行うことができるように

Year Month ClientCode Count Sum CountOfOrders CountOfFiles SumOfLines 
2017 May A   18 146 8    2   140 
2017 May B   7  110 7    6   25 
2017 May C   2  17 0    0   0 

何かアドバイスは素晴らしいことだが、私は、UNIONALLをやってみましたALL_TABLES = 2017年、月= 5月。しかし、UNIONの行は現在の列をマージするので、UNIONは機能しません。

答えて

1

あなただけのテーブルのようなビューを結合することができます...がLEFT JOINはNULL値を処理するためのCOALESCE()で、あなたはここで何をしたいようです:注意すべき

SELECT V1.Year, V1.Month, V1.ClientCode, V1.Count, V1.Sum, 
     COALESCE(CountOfOrders,0) COALESCE(CountOfFiles,0) COALESCE(SumOfLines,0) 
FROM View1 V1 
LEFT JOIN View2 V2 ON V1.Year = V2.Year 
        AND V1.Month = V2.Month 
        AND V1.ClientCode = V2.ClientCode 

だけのものがあるではない場合、あなたはより多くのロジックが必要になりますの組み合わせは、View2に存在し、View1には存在しません。

+0

ありがとう、それは完全に働いた。私はこれを前に試しましたが、私は一度に15のテーブルを一緒に投げてみました。これは2のために働いているので、私はビューを構築し続けるつもりです。 – Alphaturian

+0

@Alphaturian Ha、それは私たち全員に起こりますが、これはあなたのために働いてうれしいです。すべてのビュー/テーブルに 'Year/Month/ClientCode'の関係がある場合は、' FROM table'で可能なすべての組み合わせの個別のリストを引っ張り、それから他のすべてのビューをベースのものに戻すことを考慮する必要があります。物事をきれいに保ち、道に沿ってレコードを落とさないようにします。 –

+0

こんにちはアーロン、私は静的なテーブルを持っている:年/月/ ClientCode、しかし、私は最初のテーブルとして、そして2つのビューは、左のジョインでリンクされている場合でも、左のジョインとして追加静的な表から、それはかなり働いていません。私はそれらを必要としますか? – Alphaturian

関連する問題