- - PR -
SQL文で教えてください
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-02-04 22:45
以下のようなSQLを実現したいのですが、方法がわかりません。
わかる方がいらっしゃればご教授願います。 SQL SERVER2005です テーブルが3つあります 販売実績2007、販売実績2008、顧客マスタ、顧客営業担当者マスタ テーブルの項目は 販売実績2007、販売実績2008は同じレイアウトで「年月、売上額、顧客ID」の3つ 顧客マスタは「顧客ID、顧客名」の2つ 顧客営業担当者マスタは「顧客ID、担当者コード、担当者名」の3つ 実際のデータは以下のように入っているとします 販売実績2007 年月、売上額、顧客ID 200710、100、1 200711、200、1 200710、300、2 販売実績2008 年月、売上額、顧客ID 200810、500、1 200811、600、3 顧客マスタ 顧客ID、顧客名 1、顧客ABC 3、顧客XYZ 顧客営業担当者マスタ 顧客ID、担当者コード、担当者名 1、100、担当者A 1、200、担当者B 3、300、担当者C これらのテーブルから、以下のように顧客別の売上額を出したいです ・顧客別に1行表示 ・売上額は2007と2008で横に並べて合計値を出す ・顧客マスタに存在しないデータ(販売実績2007の3行目の顧客IDが2のレコード)も出したい 顧客マスタは最新の顧客データしか持っていないため、販売実績とマッチしないデータがある ・顧客担当者マスタは顧客ごとに複数レコードあるが、顧客コードの値が小さい1件を表示する 顧客ID、顧客名、売上額2007、売上額2008、顧客担当者 1、顧客ABC、300、500、担当者A 2、、300、0、 3、顧客XYZ、0、600、担当者C よろしくお願いします。 | ||||||||
|
投稿日時: 2009-02-05 00:12
自分で考えたSQLが未提示で、丸投げしている点には感心しませんが。。。
「顧客コード」でなく、「担当者コード」の値が小さい1件では? SQL Server 2005とのことなので、SQL99の実装である「WITH句による共通表式」を使った例です。
| ||||||||
|
投稿日時: 2009-02-05 09:51
| ||||||||
|
投稿日時: 2009-02-05 21:35
忠犬さんKingさんありがとうございます、ここまで書いてくださって感謝しています
これからこちらでどうできるか考えます。 |
1