
テーブル結合に関するSQL文について質問させてもらいます。
DBはSQLServer2005です。
下記のような二つのテーブルがあります。
テーブルA
コード
A111
A111B
A222
A333
テーブルB
コード 数量
A111 1
A111B 2
A222 3
A222B 4
上記2つのテーブルから下記の結果を表示させたいのです。
コード 数量
A111 1
A111B 2
A222 7
A333 0
テーブルBのコードがテーブルAにある場合、そのまま数量を表示。
ない場合、コードの4桁目まででサマリした合計値を表示させたい。
LEFT JOIN等をいろいろためしてみたのですがうまくいきません。
おわかりの方、方教えてください。
No.1ベストアンサー
- 回答日時:
full joinとcase式を使って、
select
case when a.コード is null then substring(b.コード,1,4) else a.コード end as コード
,isnull(sum(数量),0) as 数量
from テーブルA as a
full join テーブルB as b
on (a.コード = b.コード)
group by case when a.コード is null then substring(b.コード,1,4) else a.コード end
order by コード;
でどうでしょうか。
SQLServerの環境が無いので動作確認はしていません。
早速のご回答ありがとうございました。
大変参考になり解決できました。
group by 句の中にcaseをいれて使うことを知りませんでした。
大変勉強になりました。
No.2
- 回答日時:
select コード,sum(数量) from
(
select テーブルB.コード,テーブルB.数量 from テーブルB
left join テーブルA on テーブルB.コード = テーブルA.コード
union
select テーブルB.コード,テーブルB.数量 from テーブルB
left join テーブルA on left(テーブルB.コード,4) = テーブルA.コード
and テーブルB.コード
not exists (select テーブルA.コード from テーブルA x
where テーブルB.コード = x.コード)
)
group by コード order by コード
といった感じのsqlでどうでしょう?
ポイントは、テーブルBのコードがテーブルAにあるときとないときで別々にJoinしてunionした結果を
group byするということで。
早速のご回答ありがとうございました。
大変参考になり解決できました。
not exitsは使ったことがなかったため勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
行方向のデータを横に並べる
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
主キーの変更
-
Accessでフィールドを比較した...
-
select文の書き方
-
OracleのUnion内でそれぞれのOr...
-
続.ORACLEのSELECTのソートに...
-
履歴を管理するテーブル構造に...
-
商品コード番号を入力すると商...
-
3つ以上のテーブルをUNIONする...
-
SELECT時の行ロックの必要性に...
-
Access VBA [リモートサーバー...
-
Accessにインポートしたら並び...
-
ACCESS2007 フォーム 「バリア...
-
seoについておしえてください
-
SQL Server のデータをCSVファ...
-
ACCESSのSQLで、NULLかNULLでな...
-
DataTableから条件を満たした行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
主キーの変更
-
update文で質問です。 下記の条...
-
ACCESS 一つのフィールドに複...
-
続.ORACLEのSELECTのソートに...
-
accessで移動平均する方法
-
行方向のデータを横に並べる
-
Accessでフィールドを比較した...
-
PLSQLの識別子エラー
-
商品コード番号を入力すると商...
-
ACCESSのデータシート形式のフ...
-
複数InnerJoin時の処理落ち回避法
-
Accessのテーブル設計について...
-
正規化・リレーションシップに...
-
Accessのコンボボックスの使い...
-
データベースの問題
-
ACCESSのコンパイルエラーについて
-
SQL結合条件
おすすめ情報