SQLの書き方について質問です。
VIEW(SQL)を作成した時に結果が以下のようになりました。
--------------------------------------
SEIHIN_CD KOJO_CD CAL_DATE KEIKAKU
--------------------------------------
001111 430 20060724 1000
001111 430 20060724 0
001111 430 20060725 0
001111 431 20060724 0
本来なら、SEIHIN_CD,KOJO_CD,CAL_DATEの3つを主キーとしたいので
表の一番上の2行のうちKEIKAKU=1000の方を残しKEIKAKU=0の方を削除したいと思います。
(重複キーの一番上の行のみ残します)
削除したいというよりは本来なら下記のような抽出を行いたいです。
--------------------------------------
SEIHIN_CD KOJO_CD CAL_DATE KEIKAKU
--------------------------------------
001111 430 20060724 1000
001111 430 20060725 0
001111 431 20060724 0
SQL(PL/SQL?)の書き方が解らないのでどなたか教えていただけますと助かります。
文字制限がありますので説明が簡素になりますが、こちらのページを見てSQLを作成しています。
http://oraclesqlpuzzle.hp.infoseek.co.jp/7-64.html
以下が作成したSQLになります。
SELECT distinct a.SEIHIN_CD,a.KOJO_CD,b.CAL_DATE,decode(a.YMD,b.CAL_DATE,a.KEIKAKU,0) as KEIKAKU,b.CAL_WEEK,b.CAL_KBN
from (select SEIHIN_CD,KOJO_CD,KEIKAKU,YMD from T_SEISAN_KEIKAKU)
a,M_00_CALENDER b
order by seihin_cd,kojo_cd,cal_date,keikaku desc
カレンダーのテーブル=M_00_CALENDER
売上テーブル=T_SEISAN_KEIKAKUとなっています。
以上となりますがよろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
3つのキーで集約したら良いのでは内のでしょうか。
select A.SEIHIN_CD, A.KOJO_CD, A.CAL_DATE, A.KEIKAKU
, B.CAL_WEEK, B.CAL_KBN
from (
selet SEIHIN_CD
, KOJO_CD
, CAL_DATE
, sum( decode( A.YMD, B.CAL_DATE, A.KEIKAKU,0 ) ) as KEIKAKU
from T_SEISAN_KEIKAKU A
group by SEIHIN_CD
, KOJO_CD
, CAL_DATE
)
, M_00_CALENDER B
ご回答ありがとうございます。SUMとGROUPを使うのですね。
早速やってみました。
ちょっと上手くいかないところがあったのでこちらで修正させてもらったところ無事になりました。大変助かりましたありがとうございました!
一応その部分のSQLソースを貼っておきます。
select SEIHIN_CD,KOJO_CD,CAL_DATE, sum( decode(A.YMD,B.CAL_DATE,A.KEIKAKU,0 )) as KEIKAKU
from T_SEISAN_KEIKAKU A,M_00_CALENDER B group by SEIHIN_CD,KOJO_CD,CAL_DATE order by seihin_cd,kojo_cd,cal_date
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Windows 10 Windows11でMP3 CDを作る方法 17 2022/10/17 19:17
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select insertで複数テーブルか...
-
MERGE文を単体テーブルに対して...
-
select句副問い合わせ 値の個...
-
SQL GROUPで件数の一番多いレコ...
-
unionでマージした副問合せを結合
-
unionの結果は集計はできないで...
-
外部結合とor条件混在の記述方法
-
SQLの書き方(チェックボックス)
-
同一テーブルの別レコードの内...
-
構成比を求めるSQL文につきまして
-
集計後の数値が倍になる
-
大量にデータを更新するテーブ...
-
固定値を含む結合と複数テーブ...
-
複数テーブルのMAX値の行データ...
-
再起SQL が無限ループします。
-
結合と副問い合わせの違い
-
SELECTの結果で同一行を複数回...
-
件数を取得する方法
-
Oracleでの文字列連結サイズの上限
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
SELECTの結果で同一行を複数回...
-
MERGE文を単体テーブルに対して...
-
固定値を含む結合と複数テーブ...
-
複数テーブルのMAX値の行データ...
-
他のテーブルを参照した値はupd...
-
unionの結果は集計はできないで...
-
外部結合とor条件混在の記述方法
-
oracleの分割delete
-
SET句内で複数の条件を指定して...
-
SQL GROUPで件数の一番多いレコ...
-
DELETE 文とEXISTSの使い方につ...
-
COUNTの取得方法(?)について...
-
集計後の数値が倍になる
-
SQLの書き方(チェックボックス)
-
unionでマージした副問合せを結合
-
結合と副問い合わせの違い
-
副問い合わせのinsert文
おすすめ情報